'NoneType'对象没有属性'_inbound_nodes'吗? Keras seq2seq分类

时间:2018-11-23 09:35:38

标签: python machine-learning keras classification lstm

我在创建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”

我该如何解决?我试图找到类似问题的答案,但没有一个很好的答案来解决我的问题。

1 个答案:

答案 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)