python怎么设置随机数种子_python实验随机种子的设置
問題:
深度學(xué)習(xí)中,訓(xùn)練模型時(shí)實(shí)驗(yàn)參數(shù)設(shè)置但結(jié)果不同(部分論文最優(yōu)結(jié)果無法復(fù)現(xiàn))
實(shí)驗(yàn)參數(shù)包括: 數(shù)據(jù)集,train/test劃分,權(quán)重初始化等
可能的原因:Dropout的存在
python、numpy、torch隨機(jī)種子沒有固定
數(shù)據(jù)預(yù)處理,數(shù)據(jù)增強(qiáng)中采用了概率。若沒有設(shè)置固定的隨機(jī)種子,結(jié)果可能不同。例如常 用數(shù)據(jù)增強(qiáng)庫albumentations就采用了Python的隨機(jī)產(chǎn)生器。
數(shù)據(jù)集順序被打亂
隨機(jī)種子設(shè)定方式:pythonimport random
random.seed(1) # 生成同一個(gè)隨機(jī)數(shù);
# 如果不設(shè)置則python會(huì)根據(jù)系統(tǒng)時(shí)間隨機(jī)生成一個(gè),之后生成的隨機(jī)數(shù)不同
2. numpyimport numpy as np
np.random.seed(1) # 生成同一個(gè)隨機(jī)數(shù);
# 如果不設(shè)置則python會(huì)根據(jù)系統(tǒng)時(shí)間隨機(jī)生成一個(gè),之后生成的隨機(jī)數(shù)不同
3. torchtorch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
# 使用PyTorch時(shí),如果希望通過設(shè)置隨機(jī)數(shù)種子,在gpu或cpu上固定每一次的訓(xùn)練結(jié)果,則需要在程序執(zhí)行的開始處添加以下代碼:
def setup_seed(seed):
torch.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
np.random.seed(seed)
random.seed(seed)
torch.backends.cudnn.deterministic = True
# 設(shè)置隨機(jī)數(shù)種子
setup_seed(20)
#隨機(jī)數(shù)種子seed確定時(shí),模型的訓(xùn)練結(jié)果將始終保持一致
# 預(yù)處理數(shù)據(jù)以及訓(xùn)練模型
Ref:Pytorch隨機(jī)種子設(shè)置或固定_微信號:Custom-Software-CSDN博客_pytorch固定隨機(jī)種子?blog.csdn.net
總結(jié)
以上是生活随笔為你收集整理的python怎么设置随机数种子_python实验随机种子的设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: robo3T-操作MongoDB数据库常
- 下一篇: python中如何查一个函数的用法_Py