2017-06-22 24 views
1

我是tensorflow的初学者。 我想通过使用this tutorial来研究tensorflow。Tensorflow r.1.1中的TrainingHelper和GreedyEmbeddingHelper是否有区别(预测结果不同)?

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

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

回答

2

TrainingHelper用于培训时,解码器RNN(的其中一个)输入是前一时间步的基本事实。由于在推论时间内地面事实不可用,因此您需要输入前一时间步骤的解码器输出。

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

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

在推理时,解码RNN将仍然接收2和3.然而,代替地面实况,它将从前一时间步取得解码器输出(单热编码等于目标词汇表,例如解码器在前一时间步骤所猜测的词),通过目标嵌入运行,并将其用作输入。

+0

感谢您的解释和例子。正如我理解你的解释,我想我需要更多的学习数据或训练时间来预测下一个正确的单词。非常感谢^^ –

+0

对不起,这个。是否可以使用GreedyDecoder而不是TrainingHelper来处理特定情况?我意识到训练将会放慢......这是否可行?请参阅:https://stackoverflow.com/questions/48256372/neural-machine-translation-model-predictions-are-off-by-one –

0

分钟28在这个Tensorflow summit talk提供了一些帮助类的颜色。正如Brian的回答中所提到的那样 - GreedyEmbeddingHelper用于预测时间,当地面实况不可用作输入时。但是你也可以看看ScheduledEmbeddingTrainingHelper,如果你想在训练时间更细微的帮手

相关问题