我是tensorflow的初学者。 我想使用this tutorial来研究张量流。
阅读本教程后,我想通过使用我的数据运行此代码(韩国标题用于标记化)
在训练模型中(使用TrainingHelper
),预测结果似乎没问题。
但是在推理模型中(使用GreedyEmbeddingHelper
),预测结果非常糟糕(即使使用列车数据)。它看起来像第一个时代的训练模型预测。
TrainingHelper
和GreedyEmbeddingHelper
是否存在差异?
我认为教程和我的代码之间的区别只是超参数。
答案 0 :(得分:4)
TrainingHelper用于训练时,解码器RNN的(其中一个)输入是前一时间步的基本事实。因为在推理时间没有地面实况,所以你改为输入前一时间步的解码器输出。
例如,考虑目标句子"我喜欢披萨"。在训练时,当解码单词" pizza"时,解码RNN将接收以下输入:
在推理时,解码RNN仍将接收2和3.但是,不是基本事实,它将采用前一时间步的解码器输出(一个热编码等于目标词汇的长度) ,例如你的解码器在前一时间步骤猜到的单词),通过目标嵌入运行它,并将其用作输入。
答案 1 :(得分:1)
此Tensorflow summit talk中的分钟28为辅助类提供了一些颜色。正如Brian的回答中所提到的 - 当基础事实不可用作输入时,GreedyEmbeddingHelper用于预测时间。但是如果你想在培训时间有一个更细微的助手,你也可以看看ScheduledEmbeddingTrainingHelper