训练与测试时同一组测试集结果不一致 |
您所在的位置:网站首页 › 数据集处理方式不一样跑出来的结果差别很大 › 训练与测试时同一组测试集结果不一致 |
训练与测试时同一组测试集结果不一致,相当于训练的模型不能后续使用了,这肯定不能容忍,所以耗费经历筛查: 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() 测试之前一定要用 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |