使用pytorch的单机多GPU数据并行方式训练,torch.DataParallel,如何设置随机种子,使得每次结果可复现?
以下是设置随机种子的代码(两种都试过且无效),我在初始化模型之前调用,但每次结果都不同,模型参数初始化是相同的,不知道哪里设置的不对。请教我这个代码需要怎么调整,或者在程序什么地方设置随机种子?
谢谢!
def set_seed(seed_num=2):
random.seed(seed_num)
torch.manual_seed(seed_num)
np.random.seed(seed_num)
def set_seed(seed_num=2):
random.seed(seed_num)
torch.manual_seed(seed_num)
np.random.seed(seed_num)
os.environ['PYTHONHASHSEED'] = str(seed_num)
torch.cuda.manual_seed(seed_num)
torch.cuda.manual_seed_all(seed_num)
torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.enabled = True
单GPU环境下随机种子能设置成功