【问题标题】:How does the following Encoder-Decoder model generate outputs a different size than the input?以下编码器-解码器模型如何生成与输入不同大小的输出?
【发布时间】:2019-01-17 04:16:43
【问题描述】:

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

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

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

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

我目前的理解如下:

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

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

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

【问题讨论】:

  • 在阅读了其他一些指南之后,我认为它的工作方式是:完整的输入字符串由语句结束标记提供。完整的解码器输入由输入令牌的开头馈送,因此延迟一个时间步长。解码器目标是法语句子 one-hot 编码,未延迟,末尾带有语句结束标记。

标签: keras lstm encoder-decoder


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 2023-03-09
    • 2016-06-07
    • 2019-10-14
    • 2021-05-18
    相关资源
    最近更新 更多