【发布时间】:2019-03-15 11:30:34
【问题描述】:
self.embed = Sequential([Embedding(9488, output_dim=512,input_length=14),
Activation('relu'),
Dropout(0.5)], name='embed.0')
self.fc_embed = Sequential([Dense(512, input_shape=(10,2048)),
Activation('relu'),
Dropout(0.5)], name='fc_embed.0')
inputs_bedding = Input(shape=(10,))
xt = self.embed(inputs_bedding)
input_feats = Input(shape=(10,2048))
fc_feats = self.fc_embed(input_feats)
fc_feats_new = K.reshape(fc_feats, [fc_feats.shape[1], fc_feats.shape[2]])
xt_new = K.reshape(xt, [xt.shape[1], xt.shape[2]])
prev_h = state[0][-1] (shape is (10,512))
att_lstm_input = Concatenate([prev_h, fc_feats_new, xt_new], axis=1)
lstm, h_att, c_att = LSTM(units=512, name='core.att_lstm', return_state=True)(att_lstm_input)
model = Model([input_feats, inputs_att, inputs_bedding], lstm)
model.summary()
这是我得到的错误:
File "copy_eval.py", line 165, in <module>
model1 = TopDownModel.forward(fc_feats, att_feats, seq, att_masks)
文件“/home/ubuntu/misc/customize_keras.py”,第 127 行,向前 lstm, h_att, c_att = LSTM(units=512, name='core.att_lstm', return_state=True)(att_lstm_input) 调用中的文件“/usr/local/lib/python2.7/dist-packages/keras/layers/recurrent.py”,第 500 行 return super(RNN, self).call(inputs, **kwargs) 调用中的文件“/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py”,第 575 行 self.assert_input_compatibility(输入) 文件“/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py”,第 448 行,在 assert_input_compatibility str(输入)+'。层的所有输入 ' ValueError:使用不是符号张量的输入调用层 core.att_lstm。接收类型:.完整输入:[]。该层的所有输入都应该是张量。
如果需要更多输入,如何将它们合并为一个输出?
【问题讨论】:
-
请包含完整的回溯错误,因为它指出了产生错误的行。
-
谢谢你,马蒂亚斯。更新了完整的错误。
-
使用层Concatenate代替后端操作concatenate,或者将concatenate包裹在Lambda layer中。
-
谢谢你,rvinas。我想做的是将它作为 LSTM 的输入。刚刚更新了错误。如果可能,请提供帮助。
标签: python merge keras keras-layer