我可以使用下一层的输出作为 Keras 当前层的输入吗?

Can I use next layer's output as current layer's input by Keras?

在文本生成任务中,我们通常使用模型的最后一个输出作为当前输入来生成下一个单词。更笼统地说,我想实现一个神经网络,将下一层的最终隐藏状态视为当前层的输入。就像下面这样(让我感到困惑的是解码器部分):

但是看了Keras的文档,没有找到实现的函数。

我可以用Keras实现这个结构吗?怎么样?

您显示的结构是自定义结构。因此,Keras 不提供任何 class 或包装器来直接构建此类结构。但是YES,你可以在Keras中构建这种结构。

所以,看起来你需要反向的 LSTM 模型。我不明白另一部分可能看起来像是将之前的句子嵌入作为输入合并到 LSTM 单元的下一个时间步长输入。

我更鼓励您首先使用 LSTM 进行简单的语言建模。然后您可以稍后调整架构以构建如图所示的架构。

示例:

你问的是自动编码器,你可以在Keras中找到类似的结构。

但有些细节你应该自己想办法。包括填充策略和预处理您的输入和输出数据。您的输入无法获得动态输入大小,因此您需要为输入和输出设置固定长度。我不知道加入一个圆圈的箭头是什么意思,但我想你可以看看 Keras 中的 Merge 层(基本上是添加、连接等)

您可能需要 4 个 sequential model and one final model 代表组合结构。

还有一点,LSTM(语言模型)的解码器设置在设计上不是动态的。在您的模型定义中,您基本上为其引入了固定的输入和输出。然后你正确地准备训练,所以你不需要任何动态。然后在测试期间,您可以通过 运行 模型一次预测下一个输出步骤并再次 运行 预测下一个时间步骤等来预测循环中的每个解码单词。