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

时间:2017-06-22 04:40:17

标签: tensorflow difference inference

我是tensorflow的初学者。 我想使用this tutorial来研究张量流。

阅读本教程后,我想通过使用我的数据运行此代码(韩国标题用于标记化) 在训练模型中(使用TrainingHelper),预测结果似乎没问题。 但是在推理模型中(使用GreedyEmbeddingHelper),预测结果非常糟糕(即使使用列车数据)。它看起来像第一个时代的训练模型预测。 TrainingHelperGreedyEmbeddingHelper是否存在差异?

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

2 个答案:

答案 0 :(得分:4)

TrainingHelper用于训练时,解码器RNN的(其中一个)输入是前一时间步的基本事实。因为在推理时间没有地面实况,所以你改为输入前一时间步的解码器输出。

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

  1. 前一时间步骤的基本事实,例如嵌入单词"喜欢" (使用目标嵌入)。
  2. 上一时间步的上下文。
  3. 上一时间步的隐藏状态。
  4. 在推理时,解码RNN仍将接收2和3.但是,不是基本事实,它将采用前一时间步的解码器输出(一个热编码等于目标词汇的长度) ,例如你的解码器在前一时间步骤猜到的单词),通过目标嵌入运行它,并将其用作输入。

答案 1 :(得分:1)

Tensorflow summit talk中的分钟28为辅助类提供了一些颜色。正如Brian的回答中所提到的 - 当基础事实不可用作输入时,GreedyEmbeddingHelper用于预测时间。但是如果你想在培训时间有一个更细微的助手,你也可以看看ScheduledEmbeddingTrainingHelper