解决:测试集上每次输出的结果不相同问题

1 原因

  1. 可能在图片数据集加载时,shuffle设置为True了,需要改为False
  2. 在模型中,一些层中Dropout,Normalization等具有随机性,需要设置一下种子
  3. 没有开启net.eval()模式

2 解决方法

import 各种包
seed = 0 	# 设置一个种子,确保可以复现
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed)  # if you are using multi-GPU.
np.random.seed(seed)  # Numpy module.
random.seed(seed)  # Python random module.
torch.manual_seed(seed)
torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True

def train():
	test_loader = DataLoader(dataset=test_dataset,batch_size=batch_size, shuffle=False, drop_last=False)
	
	net.eval()
	
	for i in range(epoch):
	   ...
  1. seed设置
  2. shuffle=False
  3. net.eval() 打开

之所以每次在测试集上的结果不同的原因持续更新中。。。


你可能感兴趣的:(#,报错记录,python,开发语言)