網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
BatchNorm2d中的track_running_stats參數(shù)
如果BatchNorm2d的參數(shù)val,track_running_stats設(shè)置False,那么加載預(yù)訓(xùn)練后每次模型測(cè)試測(cè)試集的結(jié)果時(shí)都不一樣;
track_running_stats設(shè)置為T(mén)rue時(shí),每次得到的結(jié)果都一樣。
running_mean和running_var參數(shù)
running_mean和running_var參數(shù)是根據(jù)輸入的batch的統(tǒng)計(jì)特性計(jì)算的,嚴(yán)格來(lái)說(shuō)不算是“學(xué)習(xí)”到的參數(shù),不過(guò)對(duì)于整個(gè)計(jì)算是很重要的。
torch.nn.BatchNorm1d(num_features,
eps=1e-05,
momentum=0.1,
affine=True,
track_running_stats=True)
BatchNorm2d參數(shù)講解
一般來(lái)說(shuō)pytorch中的模型都是繼承nn.Module類(lèi)的,都有一個(gè)屬性trainning指定是否是訓(xùn)練狀態(tài),訓(xùn)練狀態(tài)與否將會(huì)影響到某些層的參數(shù)是否是固定的,比如BN層或者Dropout層。通常用model.train()指定當(dāng)前模型model為訓(xùn)練狀態(tài),model.eval()指定當(dāng)前模型為測(cè)試狀態(tài)。
同時(shí),BN的API中有幾個(gè)參數(shù)需要比較關(guān)心的,一個(gè)是affine指定是否需要仿射,還有個(gè)是track_running_stats指定是否跟蹤當(dāng)前batch的統(tǒng)計(jì)特性。容易出現(xiàn)問(wèn)題也正好是這三個(gè)參數(shù):trainning,affine,track_running_stats。
其中的affine指定是否需要仿射,也就是是否需要上面算式的第四個(gè),如果affine=False則γ=1,β=0 \gamma=1,\beta=0γ=1,β=0,并且不能學(xué)習(xí)被更新。一般都會(huì)設(shè)置成affine=True。
trainning和track_running_stats,track_running_stats=True表示跟蹤整個(gè)訓(xùn)練過(guò)程中的batch的統(tǒng)計(jì)特性,得到方差和均值,而不只是僅僅依賴與當(dāng)前輸入的batch的統(tǒng)計(jì)特性。相反的,如果track_running_stats=False那么就只是計(jì)算當(dāng)前輸入的batch的統(tǒng)計(jì)特性中的均值和方差了。當(dāng)在推理階段的時(shí)候,如果track_running_stats=False,此時(shí)如果batch_size比較小,那么其統(tǒng)計(jì)特性就會(huì)和全局統(tǒng)計(jì)特性有著較大偏差,可能導(dǎo)致糟糕的效果。
總結(jié)
原文鏈接:https://www.jianshu.com/p/a646cbc913b4
相關(guān)推薦
- 2023-10-17 uniapp通過(guò)功能性編碼跳轉(zhuǎn)到原生的app頁(yè)面
- 2022-08-20 解決WPF繪制矢量圖形模糊的問(wèn)題_C#教程
- 2023-10-12 nvm的作用、下載、使用、以及Mac使用時(shí)遇到commond not found:nvm如何解決
- 2022-05-12 Nginx反向代理 對(duì)響應(yīng)網(wǎng)頁(yè)中的字符串進(jìn)行替換設(shè)置
- 2022-12-11 Git的代碼合入流程詳解_相關(guān)技巧
- 2022-03-06 css3溢出隱藏的方法_基礎(chǔ)教程
- 2022-10-04 C語(yǔ)言指針和數(shù)組深入探究使用方法_C 語(yǔ)言
- 2022-09-22 使用einops簡(jiǎn)化數(shù)據(jù)維度操作
- 最近更新
-
- 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)程分支