为什么在此seq2seq模型中添加输入?

时间:2019-12-27 13:01:00

标签: tensorflow keras seq2seq

我一直试图在keras上了解有关seq2seq2的示例代码。

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

如果我理解的话,下面的decoder_model的输入是: decoder_inputsdecoder_states_inputs,其中[decoder_inputs]被用作“实际”输入,而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)

1 个答案:

答案 0 :(得分:0)

它们是对list个对象求和,而不是值。

  • decoder_states_inputslist。 (由[decoder_state_input_h, decoder_state_input_c]制造)
  • [decoder_inputs]list(请看[]

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

因此:[decoder_inputs] + [decoder_state_input_h, decoder_state_input_c]
等于:[decoder_inputs, decoder_state_input_h, decoder_state_input_c]

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