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)