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

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

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()

测试之前一定要用

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值