在使用随机函数之前调用此函数固定随机数种子,使得训练结果可以复现。
import os
import random
import numpy as np
import torch
def set_seed(seed=2000):
"""
links: https://github.com/pytorch/pytorch/issues/7068
:param seed: random seed
:return: None
"""
random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True
if __name__ == '__main__':
set_seed(2000) # set random seed
参考资料: