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

博客介绍了两种解码策略,贪婪法是输入source后,decoder生成target,选取概率最大的字符作为结果,直至生成结束符;Beam Search则按设置的beam size选取概率最高的序列。同时提到使用Beam Search测试模型时出现key error错误,导入特定语句可解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.贪婪法

 

这种策略很简单,输入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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值