【问题标题】:Keras seq2seq model Output ShapesKeras seq2seq 模型输出形状
【发布时间】:2022-10-18 02:20:49
【问题描述】:

我正在研究 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)

这个语法如何告诉模型每个单元格输出是下一个单元格的输入? 一般来说,这种语法是如何工作的?

编辑: 当您查看 keras.Model 文档时,您会意识到模型可以采用列表keras.Input 对象作为输入参数,请注意[解码器输入] + 解码器状态输入是一个列表。

【问题讨论】:

    标签: keras deep-learning nlp lstm seq2seq


    【解决方案1】:

    如果您查看 Keras Modelhere 的文档,您会看到 Model() 函数将 inputsoutputs 分别作为其第一个和第二个参数 (Model(inputs, outputs))。这指定了模型的输入和输出层(在您的情况下,将在您链接的文章末尾的 decode_sequence() 函数的推理循环中使用解码器)。

    要详细说明您发布的代码 sn-p,您将提供 decoder_inputsdecoder_states_inputs 作为 Model(inputs, outputs)inputs 参数,以指定解码器模型的输入层:

    • decoder_inputs 是一个长度为num_decoder_tokensInput 对象(Keras 张量),使用Input() 函数(请参阅Input)进行实例化,该函数仅接受输入标记(字符)。

    • 同样,decoder_states_inputs 是解码器隐藏输入状态和单元状态的两个Input 张量的列表,长度均为latent_dim

    同样,您将decoder_outputsdecoder_states 一起作为Model(inputs, outputs)outputs 参数提供,以指定模型的输出层:

    • decoder_outputs 最终成为用于输出激活的密集连接的 NN 层(参见 Dense)。
    • decoder_states 是包含decoder_lstm 的隐藏状态state_h 和单元状态state_c 的列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 2019-12-12
      • 2017-08-31
      • 2018-12-18
      • 2020-09-26
      • 1970-01-01
      • 2018-09-13
      相关资源
      最近更新 更多