網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一、torch.manual_seed(seed) 介紹
torch.manual_seed(seed) 功能描述
設(shè)置 CPU 生成隨機(jī)數(shù)的 種子 ,方便下次復(fù)現(xiàn)實(shí)驗(yàn)結(jié)果。
為 CPU 設(shè)置 種子 用于生成隨機(jī)數(shù),以使得結(jié)果是確定的。
當(dāng)你設(shè)置一個(gè)隨機(jī)種子時(shí),接下來(lái)的隨機(jī)算法生成數(shù)根據(jù)當(dāng)前的隨機(jī)種子按照一定規(guī)律生成。
隨機(jī)種子作用域是在設(shè)置時(shí)到下一次設(shè)置時(shí)。要想重復(fù)實(shí)驗(yàn)結(jié)果,設(shè)置同樣隨機(jī)種子即可。
語(yǔ)法
torch.manual_seed(seed) → torch._C.Generator
參數(shù)
seed,int類(lèi)型,是種子 – CPU生成隨機(jī)數(shù)的種子。取值范圍為 [-0x8000000000000000, 0xffffffffffffffff] ,十進(jìn)制是 [-9223372036854775808, 18446744073709551615] ,超出該范圍將觸發(fā) RuntimeError 報(bào)錯(cuò)。
返回
返回一個(gè)torch.Generator對(duì)象。
二、類(lèi)似函數(shù)的功能
為CPU中設(shè)置種子,生成隨機(jī)數(shù):
torch.manual_seed(number)
為特定GPU設(shè)置種子,生成隨機(jī)數(shù):
torch.cuda.manual_seed(number)
為所有GPU設(shè)置種子,生成隨機(jī)數(shù):
# 如果使用多個(gè)GPU,應(yīng)該使用torch.cuda.manual_seed_all()為所有的GPU設(shè)置種子。
torch.cuda.manual_seed_all(number)
使用原因 :
在需要生成隨機(jī)數(shù)據(jù)的實(shí)驗(yàn)中,每次實(shí)驗(yàn)都需要生成數(shù)據(jù)。設(shè)置隨機(jī)種子是為了確保每次生成固定的隨機(jī)數(shù),這就使得每次實(shí)驗(yàn)結(jié)果顯示一致了,有利于實(shí)驗(yàn)的比較和改進(jìn)。使得每次運(yùn)行該 .py 文件時(shí)生成的隨機(jī)數(shù)相同。
三、實(shí)例
實(shí)例 1 :不設(shè)隨機(jī)種子,生成隨機(jī)數(shù)
# test.py
import torch
print(torch.rand(1)) # 返回一個(gè)張量,包含了從區(qū)間[0, 1)的均勻分布中抽取的一組隨機(jī)數(shù)
每次運(yùn)行test.py的輸出結(jié)果都不相同:
tensor([0.4351])
tensor([0.3651])
tensor([0.7465])
實(shí)例 2 :設(shè)置隨機(jī)種子,使得每次運(yùn)行代碼生成的隨機(jī)數(shù)都一樣
# test.py
import torch
# 設(shè)置隨機(jī)種子
torch.manual_seed(0)
# 生成隨機(jī)數(shù)
print(torch.rand(1)) # 返回一個(gè)張量,包含了從區(qū)間[0, 1)的均勻分布中抽取的一組隨機(jī)數(shù)
每次運(yùn)行 test.py 的輸出結(jié)果都是一樣:
tensor([0.4963])
實(shí)例 3 :不同的隨機(jī)種子生成不同的值
改變隨機(jī)種子的值,設(shè)為 1 :
# test.py
import torch
torch.manual_seed(1)
print(torch.rand(1)) # 返回一個(gè)張量,包含了從區(qū)間[0, 1)的均勻分布中抽取的一組隨機(jī)數(shù)
每次運(yùn)行 test.py,輸出結(jié)果都是:
tensor([0.7576])
改變隨機(jī)種子的值,設(shè)為 5 :
# test.py
import torch
torch.manual_seed(5)
print(torch.rand(1)) # 返回一個(gè)張量,包含了從區(qū)間[0, 1)的均勻分布中抽取的一組隨機(jī)數(shù)
每次運(yùn)行 test.py,輸出結(jié)果都是:
tensor([0.8303])
可見(jiàn)不同的隨機(jī)種子能夠生成不同的隨機(jī)數(shù)。
但只要隨機(jī)種子一樣,每次運(yùn)行代碼都會(huì)生成該種子下的隨機(jī)數(shù)。
實(shí)例 4 :設(shè)置隨機(jī)種子后,是每次運(yùn)行test.py文件的輸出結(jié)果都一樣,而不是每次隨機(jī)函數(shù)生成的結(jié)果一樣
# test.py
import torch
torch.manual_seed(0)
print(torch.rand(1))
print(torch.rand(1))
輸出結(jié)果:
tensor([0.4963])
tensor([0.7682])
可以看到兩次打印 torch.rand(1) 函數(shù)生成的結(jié)果是不一樣的,但如果你再運(yùn)行test.py,還是會(huì)打印:
tensor([0.4963])
tensor([0.7682])
實(shí)例 5 :如果你就是想要每次運(yùn)行隨機(jī)函數(shù)生成的結(jié)果都一樣,那你可以在每個(gè)隨機(jī)函數(shù)前都設(shè)置一模一樣的隨機(jī)種子
# test.py
import torch
torch.manual_seed(0)
print(torch.rand(1))
torch.manual_seed(0)
print(torch.rand(1))
輸出結(jié)果:
tensor([0.4963])
tensor([0.4963])
參考鏈接
【pytorch】torch.manual_seed()用法詳解
總結(jié)
原文鏈接:https://blog.csdn.net/weixin_44211968/article/details/123769010
相關(guān)推薦
- 2022-05-01 Python類(lèi)的定義和使用詳情_(kāi)python
- 2022-11-13 Error: EACCES: permission denied, access '/usr/loc
- 2022-10-03 C++虛函數(shù)表與類(lèi)的內(nèi)存分布深入分析理解_C 語(yǔ)言
- 2022-07-06 Python列表創(chuàng)建與銷(xiāo)毀及緩存池機(jī)制_python
- 2023-07-04 注冊(cè)npm上傳包報(bào)This operation requires a one-time passwo
- 2022-06-13 ASP.NET?Core中的Caching組件簡(jiǎn)介_(kāi)實(shí)用技巧
- 2022-06-21 Android?Studio實(shí)現(xiàn)彈窗設(shè)置_Android
- 2022-12-30 antd之RangePicker設(shè)置默認(rèn)值方式_React
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支