最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pytorch固定隨機數(shù)種子的方法小結(jié)

 更新時間:2023年12月08日 11:15:18   作者:lgc0208  
在對神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練時,有時候會存在對訓(xùn)練過程進行復(fù)現(xiàn)的需求,然而,每次運行時 Pytorch、Numpy 中的隨機性將使得該目的變得困難重重,基于此,本文記錄了 Pytorch 中的固定隨機數(shù)種子的方法,需要的朋友可以參考下

引言

在對神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練時,有時候會存在對訓(xùn)練過程進行復(fù)現(xiàn)的需求。然而,每次運行時 Pytorch、Numpy 中的隨機性將使得該目的變得困難重重。在程序運行前固定所有隨機數(shù)的種子有望解決這一問題。基于此,本文記錄了 Pytorch 中的固定隨機數(shù)種子的方法。

在使用 Pytorch 對模型進行訓(xùn)練時,通常涉及到隨機數(shù)的模塊包括:Python、Pytorch、Numpy、Cudnn。因此,在開始訓(xùn)練前,需要針對這些涉及隨機數(shù)的模塊進行隨機數(shù)種子的固定。

1. Python

Python 本身涉及到的隨機性主要是 Python 自帶的 random 庫隨機化和 Hash 隨機化問題,需要通過 os 庫對其進行限制:

import os, random
random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)

2. Numpy

在使用 Numpy 庫取隨機數(shù)時,需要對其隨機數(shù)種子進行限制:

import numpy as np
np.random.seed(seed)

3. Pytorch

當 Pytorch 使用 CPU 進行運算時,需要設(shè)定 CPU 支撐下的 Pytorch 隨機數(shù)種子:

import torch
torch.manual_seed(seed)

當 Pytorch 使用 GPU 進行運算時,需要設(shè)定 GPU 支撐下的 Pytorch 隨機數(shù)種子:

import torch
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed) # 使用多 GPU 時使用

需要特別注意的是:目前很多博客和知乎回答提出 torch.cuda.manual_seed(seed) 和 torch.cuda.manual_seed_all(seed) 具有相同的作用。這個結(jié)論需要注意 Pytorch 版本。在筆者所用的 Pytorch 2.1 版本下,這兩個函數(shù)的作用完全不同。參考官方文檔:torch.cuda.manual_seed 和 torch.cuda.manual_seed_all(seed)

當 Pytorch 使用 Cudnn 進行加速運算時,還需要限制 Cudnn 在加速過程中涉及到的隨機策略:

import torch
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False

總結(jié)

基于上述庫的固定隨機數(shù)方法總結(jié)為:

def set_random_seed(seed: int) -> None:
	random.seed(seed)
	os.environ['PYTHONHASHSEED'] = str(seed)
	np.random.seed(seed)
	torch.manual_seed(seed)
	torch.cuda.manual_seed_all(seed)
	torch.backends.cudnn.benchmark = False
	torch.backends.cudnn.deterministic = True

seed = 114514
set_torch_seed(seed)

如果在實踐中還調(diào)用了其他涉及隨機性的第三方庫,則需要根據(jù)上述思路對該固定隨機數(shù)方法進行動態(tài)補充。

以上就是Pytorch固定隨機數(shù)種子的方法小結(jié)的詳細內(nèi)容,更多關(guān)于Pytorch固定隨機數(shù)種子的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺談Python的字典鍵名可以是哪些類型

    淺談Python的字典鍵名可以是哪些類型

    本文主要介紹了Python的字典鍵名可以是哪些類型,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python新手如何進行閉包時綁定變量操作

    Python新手如何進行閉包時綁定變量操作

    在本篇文章里小編給大家分享的是關(guān)于Python新閉包時綁定變量實例,有興趣的朋友們可以參考下。
    2020-05-05
  • Python學習之函數(shù) def

    Python學習之函數(shù) def

    這篇文章主要介紹了Python的函數(shù) def,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-10-10
  • 如何使用python的ctypes調(diào)用醫(yī)保中心的dll動態(tài)庫下載醫(yī)保中心的賬單

    如何使用python的ctypes調(diào)用醫(yī)保中心的dll動態(tài)庫下載醫(yī)保中心的賬單

    這篇文章主要介紹了如何使用python的ctypes調(diào)用醫(yī)保中心的dll動態(tài)庫下載醫(yī)保中心的賬單,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Python格式化文本段落之textwrap庫

    Python格式化文本段落之textwrap庫

    這篇文章主要介紹了Python格式化文本段落之textwrap庫,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有很大的幫助喲,需要的朋友可以參考下
    2021-05-05
  • 解決pyshp UnicodeDecodeError的問題

    解決pyshp UnicodeDecodeError的問題

    今天小編就為大家分享一篇解決pyshp UnicodeDecodeError的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 一文詳解如何在Python中使用Requests庫

    一文詳解如何在Python中使用Requests庫

    這篇文章主要介紹了如何在Python中使用Requests庫的相關(guān)資料,Requests庫是Python中常用的第三方庫,用于簡化HTTP請求的發(fā)送和響應(yīng)處理,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • python3使用pandas獲取股票數(shù)據(jù)的方法

    python3使用pandas獲取股票數(shù)據(jù)的方法

    今天小編就為大家分享一篇python3使用pandas獲取股票數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python實現(xiàn)字符串中某個字母的替代功能

    Python實現(xiàn)字符串中某個字母的替代功能

    小編想實現(xiàn)這樣一個功能:將輸入字符串中的字母 “i” 變成字母 “p”。想著很簡單,怎么實現(xiàn)呢?下面小編給大家?guī)砹薖ython實現(xiàn)字符串中某個字母的替代功能,感興趣的朋友一起看看吧
    2019-10-10
  • 修改默認的pip版本為對應(yīng)python2.7的方法

    修改默認的pip版本為對應(yīng)python2.7的方法

    今天小編就為大家分享一篇修改默認的pip版本為對應(yīng)python2.7的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11

最新評論

商洛市| 晋江市| 乾安县| 丰都县| 逊克县| 普格县| 香格里拉县| 呼伦贝尔市| 通山县| 石棉县| 班戈县| 中牟县| 康平县| 甘德县| 汝阳县| 木里| 定南县| 河东区| 邵东县| 嘉义县| 丽水市| 潞城市| 东丰县| 峡江县| 临邑县| 阿坝| 黔东| 楚雄市| 富川| 三明市| 信阳市| 伽师县| 永胜县| 邢台市| 合阳县| 垣曲县| 永清县| 白朗县| 犍为县| 涪陵区| 宁波市|