[英]'Tensor' object is not callable using Keras and seq2seq model
我正在关注本教程,我可以像这样编译和训练我的模型:
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
我确定这与 Functional 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,
)
现在,它工作正常!
为了社区的利益,在本节中提及解决方案(即使 Matias Aravena Gamboa 在问题中提到)。
使用下面提到的代码解决了问题:
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,
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.