【问题标题】:Concept of Bucketing in Seq2Seq modelSeq2Seq 模型中的 Bucket 概念
【发布时间】:2018-08-28 07:15:50
【问题描述】:

为了处理不同长度的序列,我们使用分桶和填充。在分桶中,我们为一些 max_len 制作不同的桶,我们这样做是为了减少填充量,在制作不同的桶之后,我们在不同的桶上训练不同的模型。

这是我目前发现的。但我不明白的是,所有不同的模型是如何训练的,以及它们是如何用于翻译新句子的?

【问题讨论】:

    标签: machine-learning deep-learning lstm machine-translation sequence-to-sequence


    【解决方案1】:

    无论是在训练时还是推理时,算法都需要选择最适合当前输入句子(或批次)的网络。通常,它只是取输入大小大于或等于句子长度的最小桶。

    例如,假设只有两个桶 [10, 16][20, 32]:第一个桶接受长度为 10 的任何输入(填充到正好 10)并输出翻译后的句子长度为 @987654327 @(填充到 16)。同样,第二个桶处理长度为20 的输入。这些桶对应的两个网络接受不相交的输入集。

    那么,对于长度为8的句子,最好选择第一个bucket。请注意,如果这是一个测试句子,第二个存储桶也可以处理它,但在这种情况下,它的神经网络已经训练了更大的句子,从 1120 单词,所以它很可能无法识别这个句子好吧。对应于第一个桶的网络已经在输入 110 上进行了训练,因此是一个更好的选择。

    如果测试句子的长度为25,比任何可用的存储桶都长,您可能会遇到麻烦。这里没有通用的解决方案。这里最好的做法是将输入修剪为20 单词并尝试翻译。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      相关资源
      最近更新 更多