解决深度学习训练每次结果不同

1.在验证和测试代码时加入

model.eval()

可以打开验证开关,关闭所有的dropout等。但是在返回到训练时需要再次加入

model.train()

之前的训练中做了这个操作每次的测试结果就会保证一致。后来不知道发生了什么又不能一致了
再加入种子
2.加入seed

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 _init_fn(worker_id):
    np.random.seed(int(seed)

你可能感兴趣的:(pytorch学习)