微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法迭代具有未知第一维的张量

如何解决无法迭代具有未知第一维的张量

在下面的代码中,keras 输入层在开始时添加一个 None 维度。虽然同样到达了注意力层,然后注意力层抱怨 - Cannot iterate over a Tensor with unkNown first dimension. 这里需要做哪些改变?为清楚起见,以下是不同步骤的代码和示例形状输出

print("X shape",X_train.shape)
# inp = Input(shape = (X_train.shape[0],X_train.shape[1]),output_shape = (X_train.shape[0],X_train.shape[1]))
inp = Input(shape = (X_train.shape[0],X_train.shape[1]))
print("Input shape",inp.shape)
# layer = MultiHeadAttention(num_heads=2,key_dim=2)
x = Bidirectional(LSTM(128,return_sequences=True))(inp)
x = Bidirectional(LSTM(64,return_sequences=True))(x) 
# print(x.shape)
# x=keras.layers.Reshape((x.shape[1],x.shape[2]))(x)
print("LSTM shape",x.shape)
# x,slf_attn = keras.layers.MultiHeadAttention(num_heads=3,d_model=300,key_dim=64,d_v=64,dropout=0.1)(x,x,x)
x,value_dim=64,x)
avg_pool = GlobalAveragePooling1D()(x)
max_pool = GlobalMaxPooling1D()(x)
conc = concatenate([avg_pool,max_pool])
conc = Dense(64,activation="sigmoid")(conc)
x = Dense(2,activation="softmax")(conc)      

model = Model(inputs = inp,outputs = x)
model.compile(loss = "binary_crossentropy",optimizer = "RMSprop",metrics=['accuracy'])

输出

X shape (11754,200)
Input shape (None,11754,200)
LSTM shape (None,128)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-13-a7df688bf2b7> in <module>
     10 print("LSTM shape",x.shape)
     11 # x,x)
---> 12 x,x)
     13 avg_pool = GlobalAveragePooling1D()(x)
     14 max_pool = GlobalMaxPooling1D()(x)

/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/keras_tensor.py in __iter__(self)
    370     if shape[0] is None:
    371       raise TypeError(
--> 372           'Cannot iterate over a Tensor with unkNown first dimension.')
    373     return _KerasTensorIterator(self,shape[0])
    374 

TypeError: Cannot iterate over a Tensor with unkNown first dimension.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。