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设置种子