Больше ввода и одна проблема вывода в Керасе - PullRequest
0 голосов
/ 10 октября 2018
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 (единицы измерения= 512, name = 'core.att_lstm', return_state = True) (att_lstm_input) Файл "/usr/local/lib/python2.7/dist-packages/keras/layers/recurrent.py", строка 500, в call return super (RNN, self). call (входные данные, ** 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: Layer core.att_lstm были вызваны с входом, который не является символическим тензором.Полученный тип:.Полный ввод: [].Все входные данные для слоя должны быть тензорами.

Для получения дополнительной информации, как объединить их в один выход?

1 Ответ

0 голосов
/ 14 октября 2018

Конкатенация должна использоваться как слой, например:

att_lstm_input = Concatenate(axis=1)([prev_h, fc_feats_new, xt_new])
...