参考:
PyTorch的可重复性问题

网络在训练过程中,由于随机性很大,所以结果比较难重复。这时候可以采取设置随机种子的方式,复现随机性,从而复现之前的结果。

cudnn

  1. from torch.backends import cudnn
  2. cudnn.benchmark = False # if benchmark=True, deterministic will be False
  3. cudnn.deterministic = True

pytorch

  1. torch.manual_seed(seed) # 为CPU设置随机种子
  2. torch.cuda.manual_seed(seed) # 为当前GPU设置随机种子
  3. torch.cuda.manual_seed_all(seed) # 为所有GPU设置随机种子

python和numpy

在数据处理过程中,通常需要利用python或者numpy的随机方法。

  1. random.seed(seed)
  2. np.random.seed(seed)

经过测试的确有效