训练与测试时同一组测试集结果不一致

2022-10-23 13:56:39

训练与测试时同一组测试集结果不一致,相当于训练的模型不能后续使用了,这肯定不能容忍,所以耗费经历筛查:

1. 随机种子的设置问题

可在main函数加上这个:

SEED = 1
np.random.seed(SEED)
torch.manual_seed(SEED)
torch.cuda.manual_seed_all(SEED)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False

但是我在数据加载的地方也用到了np.random函数,所以要在数据加载的init函数里加上:

SEED = 1
np.random.seed(SEED)

2. 存储整个模型,而不是用state_dict()

torch.save(model, path)   #存储
model = torch.load(path)  #加载,不用事先定义模型

3.数据预处理不一致

数据预处理阶段用到了 np.random.normal,如果测试时重新加载数据的话,模型效果就会变差。

需要保证数据预处理是一致的,最好的方法就是只处理一次数据,然后将处理后的数据保存到文件,多次运行模型时直接调用该数据文件。

这个改正后,重新加载测试与train后测试的结果完全一样。

4. model.eval()

测试之前一定要用

  • 作者:飞往宇宙
  • 原文链接:https://blog.csdn.net/u014714362/article/details/109394056
    更新时间:2022-10-23 13:56:39