参考链接:https://github.com/pytorch/pytorch/issues/7068
深度学习网络结构初始化需要设置随机种子,这个种子的忽略会导致一些结果无法复现。关于这点,上述链接有相关讨论,可以写一个函数来固定所有torch的种子:
import random
import torch
import numpy as np
import os
def seed_torch(seed=2018):
random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.backends.cudnn.deterministic = True
每次构建模型或者涉及到随机数的函数调用前先执行一次该函数就可以。