我一直试图在keras上了解有关seq2seq2的示例代码。
链接:https://blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html
如果我理解的话,下面的decoder_model
的输入是:
decoder_inputs
和decoder_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)
答案 0 :(得分:0)
它们是对list
个对象求和,而不是值。
decoder_states_inputs
是list
。 (由[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]
这只是模型输入的列表。您始终需要传递列表中的所有输入以创建模型。