如何解决无法迭代具有未知第一维的张量
在下面的代码中,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 举报,一经查实,本站将立刻删除。