利用隨機數種子來使pytorch中的結果可以復現

2021-10-06 21:06:23 字數 440 閱讀 4474

在神經網路中,引數預設是進行隨機初始化的。不同的初始化引數往往會導致不同的結果,當得到比較好的結果時我們通常希望這個結果是可以復現的,在pytorch中,通過設定隨機數種子也可以達到這麼目的。

seed = 0

torch.manual_seed(seed)

torch.cuda.manual_seed(seed)

自己在按照這種方法嘗試後進行兩次訓練所得到的loss和誤差都不同,結果並沒有復現。

也搜過一些方法,比如設定引數:

torch.backends.cudnn.deterministic = true
但是在自己的網路中這樣設定並沒有用,依然得到不同的結果。

後面偶然在google中搜到有人在設定隨機數種子時還加上了np.random.seed(seed),經過嘗試後發現結果是可復現的了。

隨機數種子

隨機數 int main 函式rand 是真正的隨機數生成器,而srand 會設定供rand 使用的隨機數種子。如果你在第一次呼叫rand 之前沒有呼叫srand 那麼系統會為你自動呼叫srand 而使用同種子相同的數呼叫 srand 會導致相同的隨機數序列被生成。srand unsigned ti...

隨機數種子

隨機數就是就隨機數種子中取出的數。種子就是個序號,這個序號交給乙個數列管理器,通過這個序號,你從管理器中取出乙個數列,這個數列就是你通過那個序號得到的隨機數。但這個隨技術並不真正隨機。因為它是通過某個演算法的得到。也就是說你給數列管理器同乙個序號將得到同樣乙個 隨機 數列。也就是說種子和隨機數列是一...

隨機數種子

隨機數 int main 函式rand 是真正的隨機數生成器,而srand 會設定供rand 使用的隨機數種子。如果你在第一次呼叫rand 之前沒有呼叫srand 那麼系統會為你自動呼叫srand 而使用同種子相同的數呼叫 srand 會導致相同的隨機數序列被生成。srand unsigned ti...