保持随机初始化的一致性 -- 随机种子函数seed
torch 和numpy中随机初始化的一致性
torch.manual_seed(number)
https://pytorch.org/docs/master/generated/torch.manual_seed.html
为CPU设置种子用于生成随机数,使得结果每次都一致
Parameters
seed [int] - The desired seed.
torch.cuda.manual_seed(number)
为当前 GPU 设置种子用于生成随机数,以使得结果是确定的。
Parameters
seed [int] - The desired seed.
torch.cuda.manual_seed_all(number)
针对多GPU,第二种方式的初始化方式是不能胜任的(insufficient)
为所有的 GPU 设置种子用于生成随机数,以使得结果是确定的。
Parameters
seed [int] - The desired seed.
numpy.random.seed(number)
如果在程序中设置相同的seed,每次生成的随机数都保持一致
例如:
import numpy as np
np.random.seed(0)
np.random.rand(4)array([0.43, 0.41, 0.34, 0.89])
np.random.seed(0)
np.random.rand(4)array([0.43, 0.41, 0.34, 0.89])
random.seed(number)
针对random库的随机种子函数,确保随机数保持一致。
import random
random.seed(1)
print(‘随机数1:’, random.random())
random.seed(1)
print(‘随机数2:’, random.random())
random.seed(2)
print(‘随机数3:’, random.random())随机数1: 0.76435129
随机数2: 0.76435129
随机数3: 0.12147516
从上述总结可知,seed(number)中number保持一致,随机数的结果也就一致。
未完待续…