Tensorflow r.1.1 中的 TrainingHelper 和 GreedyEmbeddingHelper 有什么区别(预测结果不同)?

Tae*_*Kim 3 inference difference tensorflow

我是 tensorflow 的初学者。我想通过使用本教程来研究 tensorflow 。

阅读本教程后,我想通过使用我的数据(用于标记化的韩国标题)运行此代码在训练模型(使用TrainingHelper)中,预测结果似乎还可以。但是在推理模型(使用GreedyEmbeddingHelper)中,预测结果非常糟糕(即使使用训练数据)。看起来像first epoch的训练模型预测。有什么区别TrainingHelperGreedyEmbeddingHelper

我认为教程和我的代码之间的区别只是超参数。

Bri*_*nes 5

TrainingHelper 用于训练时,此时解码器 RNN 的(其中一个)输入是来自上一个时间步的基本事实。由于在推理时无法获得地面实况,因此您可以输入上一时间步的解码器输出。

例如,考虑目标句子“我喜欢披萨”。在训练时,在解码单词“pizza”时,解码 RNN 将收到以下输入:

  1. 来自前一个时间步的基本事实,例如词“like”的嵌入(使用目标嵌入)。
  2. 上一个时间步的上下文。
  3. 上一时间步的隐藏状态。

在推理时,解码 RNN 仍将接收 2 和 3。然而,它会从前一个时间步长(一个等于目标词汇长度的单热编码,例如你的解码器在上一个时间步骤猜测的词),通过目标嵌入运行它,并将其用作输入。