1、PyTorch设置随机数的目的
在神经网络中,参数默认是进行随机初始化的。不同的初始化参数往往会导致不同的结果。当得到比较好的结果时我们通常希望这个结果是可以复现的,在PyTorch中,通过设置全局随机数种子可以实现这个目的。
2、PyTorch seed 设置方式
seed = 0
torch.manual_seed(seed) # 为CPU设置随机种子
torch.cuda.manual_seed(seed) # 为当前GPU设置随机种子
torch.cuda.manual_seed_all(seed) # 为所有GPU设置随机种子
3、PyTorch seed 例子介绍
# test.py
import torch
torch.manual_seed(0)
print(torch.rand(1)) # 返回一个张量,包含了从区间[0, 1)的均匀分布中抽取的一组随机数
每次运行test.py的输出结果都是一样:
tensor([0.4963])
没有随机种子,如下所示:
# test.py
import torch
print(torch.rand(1)) # 返回一个张量,包含了从区间[0, 1)的均匀分布中抽取的一组随机数
每次运行test.py的输出结果都不相同:
tensor([0.2079])
----------------------------------
tensor([0.6536])
----------------------------------
tensor([0.2735])
注意:设置随机种子后,是每次运行test.py文件的输出结果都一样,而不是每次随机函数生成的结果一样: