为什么要在这个 seq2seq 模型中添加输入?

Why are the inputs added in this seq2seq Model?

我一直在努力理解 keras 上关于 seq2seq2 的示例代码。

Link: https://blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html

如果我理解它,下面的 decoder_model 的输入是: decoder_inputsdecoder_states_inputs 其中 [decoder_inputs] 应该用作 "actual" 输入,而 decoder_states_inputs 初始化 lstm 层的状态。

创建模型时,将看似用于不同事物的两个输入与“+”运算符组合在一起。 Model()如何区分两者?


encoder_model = Model(encoder_inputs, encoder_states)

decoder_state_input_h = Input(shape=(latent_dim,))
decoder_state_input_c = Input(shape=(latent_dim,))
decoder_states_inputs = [decoder_state_input_h, decoder_state_input_c]
decoder_outputs, state_h, state_c = decoder_lstm(
    decoder_inputs, initial_state=decoder_states_inputs)
decoder_states = [state_h, state_c]
decoder_outputs = decoder_dense(decoder_outputs)
decoder_model = Model(
    [decoder_inputs] + decoder_states_inputs,
    [decoder_outputs] + decoder_states)

他们正在求和 list 个对象,而不是值。

  • decoder_states_inputs 是一个 list。 (由 [decoder_state_input_h, decoder_state_input_c] 组成)
  • [decoder_inputs]是一个list(看看[]

A list + list 只是两个列表的串联。

所以:[decoder_inputs] + [decoder_state_input_h, decoder_state_input_c]
等于:[decoder_inputs, decoder_state_input_h, decoder_state_input_c]

这只是模型的输入列表。您始终需要传递列表中的所有输入来创建模型。