为什么要在这个 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_inputs
和 decoder_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]
这只是模型的输入列表。您始终需要传递列表中的所有输入来创建模型。
我一直在努力理解 keras 上关于 seq2seq2 的示例代码。
Link: 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]
应该用作 "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]
这只是模型的输入列表。您始终需要传递列表中的所有输入来创建模型。