解决pytorch模型加载跑测试集和训练过程中跑测试集结果不一致的问题——功夫不负有心人

其实引发这个现象的原因还是很多的,需要自己一一排查。
网上所说的较为常见的原因是
1、随机种子固定
2、在test之前将模型改为eval()模型

针对这两种情况,我对自己的代码做了相应的验证,并没有效果。

后来看到一篇知乎,说“我查了一下我的标签。我每次加载数据的时候target都是从一个由集合转成的列表里面的下标……这样就造成了每次做断点训练的时候每个样本的target都是不一样的……他只拟合了训练时候的那个target……”

于是,想到了自己标签是否存在每次加载不一致的问题。经过debug,发现确实存在这样的问题。

因为类别固定,所以把label_2_index写死就OK了。

经测试,每次test结果相对固定,问题解决了。

训练时的测试分数
解决pytorch模型加载跑测试集和训练过程中跑测试集结果不一致的问题——功夫不负有心人_第1张图片
直接load模型的测试分数
解决pytorch模型加载跑测试集和训练过程中跑测试集结果不一致的问题——功夫不负有心人_第2张图片

你可能感兴趣的:(python,NLP,pytorch,深度学习,python)