网络在训练过程中,由于随机性很大,所以结果比较难重复。这时候可以采取设置随机种子的方式,复现随机性,从而复现之前的结果。
cudnn
from torch.backends import cudnn
cudnn.benchmark = False # if benchmark=True, deterministic will be False
cudnn.deterministic = True
pytorch
torch.manual_seed(seed) # 为CPU设置随机种子
torch.cuda.manual_seed(seed) # 为当前GPU设置随机种子
torch.cuda.manual_seed_all(seed) # 为所有GPU设置随机种子
python和numpy
在数据处理过程中,通常需要利用python或者numpy的随机方法。
random.seed(seed)
np.random.seed(seed)
经过测试的确有效