torch.manual_seed(seed) – 官方文档说明:设置 (CPU) 生成随机数的种子,并返回一个torch.Generator对象。
设置种子的用意是一旦固定种子,后面依次生成的随机数其实都是固定的。
通过代码说明一下:
import torch
random_seed = 123
torch.manual_seed(random_seed)
print(torch.rand(1)) # 随机生成[0, 1)的数
print(torch.rand(1))
"""
Out:
tensor([0.2961])
tensor([0.5166])
"""
说明:上面手动设置完种子之后,调用了两次torch.rand这个API (随机生成[0, 1]的数),可以发现输出的是两个不同的随机数,不是说已经固定种子了吗?怎么还会生成不同的随机数?实际上,准确来说,手动设置种子之后导致的结果应该是:在每次重新运行上面的程序时,得到的打印结果都是上面两个数。
在每次重新运行程序时,同样的随机数生成代码得到的是同样的结果