我在创建Keras模型时遇到问题。我找到了一个简单的编码器解码器,并尝试如下修复它:
# some encoder code ... .... above is not shown here, where it is too obvious
encoder_outputs, state_h, state_c = encoder(encoder_inputs)
encoder_states = [state_h, state_c]
decoder_lstm = LSTM(latent_dim, return_sequences=True, return_state=True)
decoder_outputs, _, _ = decoder_lstm(encoder_outputs[-1:], initial_state=encoder_states)
decoder_dense = Dense(num_decoder_tokens, activation='softmax')
decoder_outputs = decoder_dense(decoder_outputs)
model = Model(inputs=[encoder_inputs], outputs=decoder_outputs)
将最后一个编码器输出用作解码器输入,并且仅用于单个输出。
我想知道为什么会在以下位置产生这样的问题
model = Model(inputs=[encoder_inputs], outputs=decoder_outputs)
并创建消息:
“ NoneType”对象没有属性“ _inbound_nodes”
我该如何解决?我试图找到类似问题的答案,但没有一个很好的答案来解决我的问题。
答案 0 :(得分:0)
首先,encoder_outputs[-1:]
会给您最后一批,而不是encoder_outputs[:,-1:]
每一批的最后输出。
第二,由于您需要将Keras张量传递到Keras中的图层,因此需要使用Lambda
图层进行切片:
last_input = Lambda(lambda x: x[:,-1:])(encoder_inputs)
decoder_outputs, _, _ = decoder_lstm(last_input,
initial_state=encoder_states)