tensorflow实现seq2seq模型细节(3):inference推理阶段解码方法,beam search 和 greedy以及解决使用beam search出现key error的错误

1.贪婪法

 

tensorflow实现seq2seq模型细节(3):inference推理阶段解码方法,beam search 和 greedy以及解决使用beam search出现key error的错误

这种策略很简单,输入source后,decoder需要生成target,传入<s>作为序列的开始,生成下一个字符,直接选取概率最大的作为结果,用当前节点的结果作为下一个节点生成的输入,直到生成</s>结束。

2.beam search

参考https://www.zhihu.com/question/54356960/answer/138990060

参数beam width / beam size=n,n<=target_vocab_sie

假设词库为{a,b,c},设置beam size = 2.

生成第一个单词,选择概率最高的为a,c

第二次分别输入a和c,产生aa,ab,ac,ca,cb,cc选择概率最高的2个序列。

这个重复下去,最终产生2个概率最高的序列作为结果。

3.beam search出现的key error错误

在测试模型时我发现选择beam search作为解码方法,会报一个key error错误,Google后有人说需要加一句

from tensorflow.contrib.seq2seq.python.ops import beam_search_ops

确实这个问题加这个导入语句就解决了,但是具体原因我就没追究了