pytorch 随机种子的使用

pytorch随机种子

在使用pytorch框架搭建模型的时候,模型中的参数都是进行初始化的,且每次初始化的结果不同,这就导致每次的训练模型不一样,要想在程序不变的情况下,使得每次的输出结果一致,那就要设定随机种子。
先来了解一下随机种子:
拿numpy举例:

import numpy as np
n=0
while(n<5):
    np.random.seed(2)
    n+=1
    print(np.random.random())
print('\n')
n=0
np.random.seed(2)
while(n<5):
    n+=1
    print(np.random.random())

输出的结果为:

0.43599490214200376
0.43599490214200376
0.43599490214200376
0.43599490214200376
0.43599490214200376

0.43599490214200376
0.025926231827891333
0.5496624778787091
0.4353223926182769
0.42036780208748903

当我们设定一个随机种子时,那么关于随机数的选取就确定了。但是我们可以发现,随机数只会确定最近的一个random的选取,那么后面的随机数是怎么确定的呢?
其实,当我们选取了一个随机种子的时候,在确定了接下来的random之后,还会生成下一个种子,这个种子的形成,和你当前选取的种子有关。所以只要确定一个选取的种子,那么接下来的随机数也会被固定。所以我们没有必要对每个随机数的选取,都人为给定一个种子,只需要设定一次就好。

pytorch设定随机种子

之前使用随机种子的设定使用cpu或gpu时需要不同的代码进行设定,现在已经统一为:

torch.manual_seed(10)

种子的数字10可以自己给定。
这样,当我们在训练模型的时候,在不该变程序的基础上,每次运行的结果就会一致了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章