问题背景:
这几天重构了我自己的训练代码,但出现一个问题,原本随便一跑就能复现原论文效果的程序,竟然怎么训练也出不来结果。
发现过程:
首先我反复核对了我写的Dataset类、模型初始化方法、模型参数(学习率,milestone等等)以及训练代码,没有任何问题。但是训练完还是没有效果!
然后我在训练程序里添加了val环节,验证集与测试集相同,发现训练时的验证结果竟然与测试结果相距甚远,又反复核对验证程序与测试程序,发现测试程序少了一句model.eval(). 加上之后果然行了!
结论:
导致这个现象的原因,可参考以下链接:
https://zhuanlan.zhihu.com/p/208233193
https://blog.csdn.net/qq_38410428/article/details/101102075