Объект Tensor не может быть вызван с использованием моделей Keras и seq2seq - PullRequest
0 голосов
/ 24 февраля 2019

Я следовал этому учебнику , и я могу скомпилировать и обучить мою модель следующим образом:

encoder_inputs = Input(shape=(None,))
encoder_embedding = Embedding(max_words, latent_dim)(encoder_inputs)
encoder_lstm, state_h, state_c = LSTM(latent_dim, return_state=True)(encoder_embedding)
encoder_states = [state_h, state_c]

decoder_inputs = Input(shape=(None,))
decoder_embedding = Embedding(max_words, latent_dim)(decoder_inputs)
decoder_lstm = LSTM(latent_dim, return_sequences=True)(decoder_embedding, initial_state=encoder_states)
decoder_outputs = Dense(decoder_target_data_size, activation='softmax')(decoder_lstm)

model = Model([encoder_inputs, decoder_inputs], decoder_outputs)
model.compile(optimizer='rmsprop', loss='categorical_crossentropy')
model.fit([X_train, Y_train], decoder_target_data, batch_size=128, epochs=100,validation_split=0.2, verbose=0)

Но когда я хочу выполнить часть логического вывода

encoder_model = Model(encoder_inputs, encoder_states)
decoder_state_input_h = Input(shape=(None,))
decoder_outputs, decoder_state_h = decoder_lstm(encoder_embedding, initial_state=decoder_state_input_h)
decoder_outputs = decoder_dense(decoder_outputs)

Я получил следующую ошибку:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-36-c87095c25663> in <module>
      3 decoder_state_input_h = Input(shape=(None,), name="DecoderStateInput_1")
      4 
----> 5 decoder_outputs, decoder_state_h = decoder_lstm(encoder_embedding, initial_state=decoder_state_input_h)
      6 decoder_outputs = decoder_dense(decoder_outputs)
      7 

TypeError: 'Tensor' object is not callable

Я уверен, что это что-то в функциональном API, но я не знаю, как ее решить.

Яиспользуя keras-2.2.4 с tensorflow-1.10.0

Если бы кто-то мог мне помочь, я был бы очень благодарен!

РЕДАКТИРОВАТЬ

Я решил изменить это:

encoder_model = Model(encoder_inputs, encoder_states)

decoder_hidden_state_inputs = Input(shape=(latent_dim,))
decoder_cell_state_inputs = Input(shape=(latent_dim,))
decoder_state_inputs = [decoder_hidden_state_inputs, decoder_cell_state_inputs]

decoder_lstm_outputs, decoder_hidden_state, decoder_cell_state = decoder_lstm(inputs=decoder_embedding(decoder_inputs),
                                                                              initial_state=decoder_state_inputs,
    )
decoder_state = [decoder_hidden_state, decoder_cell_state]

decoder_outputs = decoder_dense(inputs=decoder_lstm_outputs)

decoder_model = Model(
    inputs=[decoder_inputs] + decoder_state_inputs,
    outputs=[decoder_dense_outputs] + decoder_state,
)

Теперь все работает нормально!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...