首页 > 解决方案 > 以下编码器-解码器模型如何生成与输入不同大小的输出?

问题描述

我在 Keras 中实现了以下教程:

https://towardsdatascience.com/nlp-sequence-to-sequence-networks-part-2-seq2seq-model-encoderdecoder-model-6c22e29fd7e1

在介绍中,作者说该设置非常适合将随机变化大小的输入序列与随机变化大小的输出序列匹配。我很困惑,因为我看不到如何生成与输入句子长度不同的句子输出。

假设输入是英语句子,输出是法语句子,如教程中所示。

我目前的理解如下:

编码器输入是英文句子,作为要嵌入的整数序列。解码器输入是法语句子,作为延迟一个时间步长的整数序列,序列中的第一个整数表示空值。该层也是嵌入的。

目标是将法语句子作为一系列整数,而不是延迟。我似乎需要在末尾添加一个整数来表示字段的结尾,否则大小与解码器嵌入的输入不匹配,keras 会抛出错误。

在进行预测时,你究竟提供了什么?似乎不可能得到与输入不同长度的输出。是这样吗?

标签: keraslstmencoder-decoder

解决方案


据我了解这篇论文https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf这个想法是你的解码器预测状态(或单词)直到它看到(预测)一个特定的词(例如“EOS”,它是序列结尾的缩写)。这就是我理解输出长度不固定的原因。当然,您的训练数据必须是适当的,并使用特定的“EOS”标签进行注释。


推荐阅读