我在这里工作的keras seq2seq例子:https://blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html我从文本中理解的是,在解码器模型中,每个单元的输出都是下一个单元的输入。但是,我不理解如何实现对模型的递归。在链接中,它使解码器模型如下所示。
decoder_model = Model(
[decoder_inputs] + decoder_states_inputs,
[decoder_outputs] + decoder_states)
这个语法是如何告诉模型每个单元格的输出是下一个单元格的输入的呢?
EDIT:当你检查keras.Model文档时,你会意识到一个模型可以接受keras.Input对象的列表作为输入参数,注意**[decoder_inputs] + decoder_states_inputs**是一个列表。
1条答案
按热度按时间m2xkgtsf1#
如果您查看Keras
Model
类here的文档,您将看到Model()
函数分别将inputs
和outputs
作为其第一个和第二个参数(Model(inputs, outputs)
)。它指定模型的输入层和输出层(在您的例子中,是一个解码器,它将在您所链接的文章末尾的decode_sequence()
函数的推理循环中使用)。为了更详细地说明您发布的代码片段,您将提供
decoder_inputs
和decoder_states_inputs
作为Model(inputs, outputs)
的inputs
参数,以指定解码器模型的输入层:decoder_inputs
是长度为num_decoder_tokens
的Input
对象(KerasTensor),使用Input()
函数(请参见Input)示例化,该函数仅接受输入标记(字符)。decoder_states_inputs
是用于解码器的隐藏输入状态和单元状态的两个Input
Tensor的列表,长度均为latent_dim
。同样,将
decoder_outputs
和decoder_states
一起作为Model(inputs, outputs)
的outputs
参数提供,以指定模型的输出层:decoder_outputs
最终成为用于输出激活的密集连接的NN层(参见Dense)。decoder_states
是包含decoder_lstm
的隐藏状态state_h
和单元状态state_c
的列表。