【问题标题】:Seq to Seq model trainingSeq to Seq 模型训练
【发布时间】:2020-02-16 14:39:03
【问题描述】:

我有几个问题:

  1. 在具有不同输入长度的 seq to seq 模型中,如果不使用注意掩码,RNN 可能最终会计算填充元素的隐藏状态值?因此,这意味着注意掩码是强制性的,否则我的输出会出错?
  2. 那么如何处理不同长度的标签,假设我已经填充了批量传递它。现在我不希望我的填充元素对我的损失产生影响,那么我该如何忽略它呢?

【问题讨论】:

    标签: tensorflow nlp pytorch sequence-to-sequence


    【解决方案1】:
    1. 不,不一定。 RNN 采用时间序列并每次计算隐藏状态。您可以强制您的 RNN 停止,而不是计算填充元素的隐藏状态值。

    您可以为此使用动态RNN。在这里阅读:What is a dynamic RNN in TensorFlow?

    【讨论】:

    • 好的,我不知道动态 RNN,谢谢。但是如果我们使用普通的 RNN 呢?注意口罩是强制性的吗?以及在计算损失时如何处理标签。
    • @anandhperumal 1) “Dynamic RNN”只是一个名称,它实际上是普通的 RNN。只是不计算填充的(这很简单:if padded: don't go further)。 2)是的,它是强制性的,它会起作用,但如果注意的话会更好。 3)损失函数在你手中。只需掩盖损失计算中的“填充”部分。我的意思是写损失函数的方式不会影响它。
    • “是的,它是强制性的,它会起作用,但注意会更好。”你的意思是这不是强制性的,对吧?
    猜你喜欢
    • 2020-05-24
    • 2022-09-26
    • 2022-07-16
    • 2021-02-20
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多