У объекта 'NoneType' нет атрибута '_inbound_nodes'?Керас seq2seq классификация - PullRequest
0 голосов
/ 23 ноября 2018

У меня проблема с созданием модели 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 голосов
/ 23 ноября 2018

Прежде всего, 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)
...