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可以自己給定。
這樣,當我們在訓練模型的時候,在不該變程序的基礎上,每次運行的結果就會一致了。

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