1 隨機種子
計算機所謂的亂數其實是偽亂數,所謂的‘偽’,意思是這些數其實是有規律的,只不過因為演算法規律太復雜,很難看出來,
但是再復雜的演算法都要一個初始值,如果沒有一個初始值,他也不能憑空制造一系列的亂數出來,那我們說的隨機種子seed()就是這個初始值,
讓我們看看random亂數是怎么生成的:我們將這套復雜的生成亂數演算法看成一個黑盒,把我們準備好的種子扔進去,它會返給你兩個東西,一個是你想要的亂數,另一個是保證能生成下一個亂數的新的種子,然后我們把新的種子放進黑盒,又得到一個新的亂數和一個新的種子,從此在生成亂數的路上越走越遠,得到越來越多的亂數,
也就是說,一樣的隨機種子,出來的亂數是一樣的,以下圖為例:

我們對隨機種子的設定放在了回圈里面,每次執行回圈都旗幟鮮明地告訴黑盒:“我的隨機種子是1”,那么很顯然:同一個黑盒,同一個隨機種子,自然得到的是同一個亂數,

把對隨機種子的設定放在了回圈外面,他只在第一次回圈的時候明確地告訴黑盒:“我的隨機種子是1”,那么也很顯然:從第二次回圈開始,黑盒用的就是自己生成的新隨機種子了,
2 不同的庫設定隨機種子
2.1 random
import random
random.seed(2021)
2.2 numpy
import numpy as np
np.random.seed(2021)
2.3 torch
2.3.1 cpu的隨機種子
import torch
torch.manual_seed(2021)
2.3.2 gpu的隨機種子
import torch
torch.cuda.manual_seed(2021)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287608.html
標籤:其他
上一篇:-考研第十五周總結-
下一篇:思科 計算機網路 期末考試答案
