seq2seq beam search使用预测库会出现问题
Created by: kinghuin
paddlepaddle-gpu 1.7.2.post107 centos python3
模型结构:
seq2seq,训练和评估阶段decoder会输入 <s> <label_1> <label_2> ...
预测阶段使用beam search
如果评估阶段和预测阶段用同一条数据且指定beam_size=1,理论上,评估和预测输出的首字应该相同,因为此时decoder的输入都是 <s>
,RNN的参数也是相同的,输出的首字应该是相同的才对。
不开启预测库,输出与预期相符,评估和预测输出的首字相同:
[dev] left: 人增福寿年增岁 right: 鱼满池塘猪满栏 infer: 风风月月月人人
[dev] left: 孔雀 right: 鲤鱼 infer: </s></s>
[dev] left: 津路控吴趋君子至斯欣得见 right: 垂亭掬惠水好山相对欲忘机 infer: 一风山一一一一一一心心</s>
[dev] left: 湖南入贵州两省风光异趣 right: 绝地存苗寨千山秀色同辉 infer: 风风风一一一一一人人</s>
[dev] left: 酒香莺对坐 right: 柳翠燕同行 infer: 风月月月</s>
[dev] left: 风吹云乱天垂泪 right: 日照露干地开颜 infer: 一月月月月月人
[dev] left: 若有经心风过耳 right: 实无诚意枉凝眉 infer: 一风月月月月人
[dev] left: 琴棋书画论风雅 right: 聚散离合演世情 infer: 风风月月月月人
[dev] left: 滚滚硝烟曾将大好河山践踏铭心刻骨 right: 圆圆美梦正启全新岁月腾飞倒海翻江 infer: 一风山山一一一一一一一一一心</s></s>
[dev] left: 醉眠摇曳春风花气酒香清厮酿 right: 分明画出秋色水容山态两相饶 infer: 一风山一一一一一一一一心</s>
[dev] left: 阳春真有脚 right: 帝德实无边 infer: 花月月月</s>
[dev] left: 莫言著作实无趣 right: 快意生涯多不羁 infer: 一风月月月人</s>
[dev] left: 眉目传情无眉目 right: 手足失措有手足 infer: 一风月月月月人
[dev] left: 一城花雨山河壮 right: 满苑春风天地辉 infer: 一月月月月月人
[dev] left: 情怀终未许 right: 心意自相知 infer: 花花月月</s>
[2020-04-27 14:23:40,027] [ EVAL] - [dev dataset evaluation result] loss=60.75833 bleu=0.03295 [step/sec: 48.49]
[2020-04-27 14:23:40,028] [ EVAL] - best model saved to ckpt_20200427141918/best_model [best bleu=0.03295]
[2020-04-27 14:23:41,184] [ INFO] - PaddleHub predict start
[2020-04-27 14:23:41,707] [ INFO] - PaddleHub predict finished.
[predict] left: 人增福寿年增岁, right: 鱼满池塘猪满栏, infer: 风风月月月人</s>
[predict] left: 孔雀, right: 鲤鱼, infer: </s>
[predict] left: 津路控吴趋君子至斯欣得见, right: 垂亭掬惠水好山相对欲忘机, infer: 一风山一一一一一一一心</s>
[predict] left: 湖南入贵州两省风光异趣, right: 绝地存苗寨千山秀色同辉, infer: 风风风一一一一一一人</s>
[predict] left: 酒香莺对坐, right: 柳翠燕同行, infer: 风月月月</s>
[predict] left: 风吹云乱天垂泪, right: 日照露干地开颜, infer: 一风月月月月人
[predict] left: 若有经心风过耳, right: 实无诚意枉凝眉, infer: 一风月月月月人
[predict] left: 琴棋书画论风雅, right: 聚散离合演世情, infer: 风风月月月月人
[predict] left: 滚滚硝烟曾将大好河山践踏铭心刻骨, right: 圆圆美梦正启全新岁月腾飞倒海翻江, infer: 一风山一一一一一一一一一一心</s>
[predict] left: 醉眠摇曳春风花气酒香清厮酿, right: 分明画出秋色水容山态两相饶, infer: 一风风一一一一一一一一一心
[predict] left: 阳春真有脚, right: 帝德实无边, infer: 花月月月</s>
[predict] left: 莫言著作实无趣, right: 快意生涯多不羁, infer: 一风月月月人</s>
[predict] left: 眉目传情无眉目, right: 手足失措有手足, infer: 一风月月月月人
[predict] left: 一城花雨山河壮, right: 满苑春风天地辉, infer: 一风月月月月月
[predict] left: 情怀终未许, right: 心意自相知, infer: 花花月月</s>
上述输出中,模型还未收敛,所以效果很差,但不妨碍对[dev][predict]的infer首字输出的判断。
如果开启预测库,输出与预期不符,评估和预测输出的首字可能不同:
[2020-04-27 14:48:49,451] [ INFO] - Evaluation on dev dataset start
[dev] left: 人增福寿年增岁 right: 鱼满池塘猪满栏 infer: 一山春人人人</s>
[dev] left: 孔雀 right: 鲤鱼 infer: </s></s>
[dev] left: 津路控吴趋君子至斯欣得见 right: 垂亭掬惠水好山相对欲忘机 infer: 一山山一人人人人</s></s></s></s>
[dev] left: 湖南入贵州两省风光异趣 right: 绝地存苗寨千山秀色同辉 infer: 一山山人人人人人</s></s></s>
[dev] left: 酒香莺对坐 right: 柳翠燕同行 infer: 一月春人人
[dev] left: 风吹云乱天垂泪 right: 日照露干地开颜 infer: 一山月月人人</s>
[dev] left: 若有经心风过耳 right: 实无诚意枉凝眉 infer: 一月月人人人</s>
[dev] left: 琴棋书画论风雅 right: 聚散离合演世情 infer: 一山春人人人</s>
[dev] left: 滚滚硝烟曾将大好河山践踏铭心刻骨 right: 圆圆美梦正启全新岁月腾飞倒海翻江 infer: 一山山一人人人人人</s></s></s></s></s></s></s>
[dev] left: 醉眠摇曳春风花气酒香清厮酿 right: 分明画出秋色水容山态两相饶 infer: 风山山山人人人人</s></s></s></s></s>
[dev] left: 阳春真有脚 right: 帝德实无边 infer: 一人人人人
[dev] left: 莫言著作实无趣 right: 快意生涯多不羁 infer: 一月月人人人</s>
[dev] left: 眉目传情无眉目 right: 手足失措有手足 infer: 一山春人人人</s>
[dev] left: 一城花雨山河壮 right: 满苑春风天地辉 infer: 一山春人人人</s>
[dev] left: 情怀终未许 right: 心意自相知 infer: 一月月人人
[2020-04-27 14:49:10,026] [ EVAL] - [dev dataset evaluation result] loss=61.55238 bleu=0.02864 [step/sec: 48.53]
[2020-04-27 14:49:10,028] [ INFO] - PaddleHub predict start
[2020-04-27 14:49:10,449] [ INFO] - PaddleHub predict finished.
[predict] left: 人增福寿年增岁, right: 鱼满池塘猪满栏, infer: 一一风人人风</s>
[predict] left: 孔雀, right: 鲤鱼, infer: </s>
[predict] left: 津路控吴趋君子至斯欣得见, right: 垂亭掬惠水好山相对欲忘机, infer: 风山春春千千春人人人</s>
[predict] left: 湖南入贵州两省风光异趣, right: 绝地存苗寨千山秀色同辉, infer: 风山春春春春人人风</s>
[predict] left: 酒香莺对坐, right: 柳翠燕同行, infer: 一一风风</s>
[predict] left: 风吹云乱天垂泪, right: 日照露干地开颜, infer: 一一风人风风</s>
[predict] left: 若有经心风过耳, right: 实无诚意枉凝眉, infer: 一一人人人人</s>
[predict] left: 琴棋书画论风雅, right: 聚散离合演世情, infer: 一一风人人风</s>
[predict] left: 滚滚硝烟曾将大好河山践踏铭心刻骨, right: 圆圆美梦正启全新岁月腾飞倒海翻江, infer: 风山春千千千千千千千人人人人人人
[predict] left: 醉眠摇曳春风花气酒香清厮酿, right: 分明画出秋色水容山态两相饶, infer: 风山春千千千千千千人人风</s>
[predict] left: 阳春真有脚, right: 帝德实无边, infer: 一一人人</s>
[predict] left: 莫言著作实无趣, right: 快意生涯多不羁, infer: 一一一一人风</s>
[predict] left: 眉目传情无眉目, right: 手足失措有手足, infer: 一山人人人风</s>
[predict] left: 一城花雨山河壮, right: 满苑春风天地辉, infer: 一一一人人风</s>
[predict] left: 情怀终未许, right: 心意自相知, infer: 一一人人</s>
上例中
[dev] left: 滚滚硝烟曾将大好河山践踏铭心刻骨 right: 圆圆美梦正启全新岁月腾飞倒海翻江 infer: 一山山一人人人人人</s></s></s></s></s></s></s>
[predict] left: 滚滚硝烟曾将大好河山践踏铭心刻骨, right: 圆圆美梦正启全新岁月腾飞倒海翻江, infer: 风山春千千千千千千千人人人人人人
dev首字是"一",predict首字是"风",不符合预期。
是预测库对beam search的支持存在问题吗?