torch.manual_seed(int seed)

使用原因:

在需要生成随机数的实验中,确保每次运行.py文件时,生成的随机数都是固定的,这样每次实验结果显示也就一致了。

代码演示

torch.manual_seed(1)
torch.rand(1,2)

无论执行多少次,(注意是一起执行这两行代码),输出的结果都是一样的

若去掉 torch.manual_seed(1) 直接torch.rand(1,2) 则生成的结果是不一样的

参数 seed 的理解

可以理解为一个rand 的index,index相同,则rand的结果是相同的

torch.manual_seed(2)
print(torch.rand(2))

torch.manual_seed(1)
print(torch.rand(2))

torch.manual_seed(2)
print(torch.rand(2))

torch.manual_seed(1)
print(torch.rand(2))

输出结果:

tensor([0.6147, 0.3810])
tensor([0.7576, 0.2793])
tensor([0.6147, 0.3810])
tensor([0.7576, 0.2793])

理解: seed=1 rand产生的是 tensor([0.7576, 0.2793]); seed=2 rand产生的是 tensor([0.6147, 0.3810]);

GPU

torch.cuda.manual_seed(int.seed):为当前GPU设置随机种子
torch.cuda.manual_seed_all(int.seed):为所有的GPU设置种子