網(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è)置為True時(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類的,都有一個(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)推薦
- 2022-06-09 ASP.NET?Core使用EF創(chuàng)建模型(必需和可選屬性、最大長(zhǎng)度、并發(fā)標(biāo)記、陰影屬性)_實(shí)用技巧
- 2023-10-25 el-tree設(shè)置選中高亮/焦點(diǎn)高亮、選中的節(jié)點(diǎn)加深背景,更改字體顏色等
- 2022-10-01 Android11及以上文件讀寫權(quán)限申請(qǐng)?jiān)敿?xì)介紹_Android
- 2022-09-01 Django定時(shí)任務(wù)Django-crontab的使用詳解_python
- 2022-09-03 C++日期類(Date)實(shí)現(xiàn)的示例代碼_C 語(yǔ)言
- 2023-01-21 flask中響應(yīng)錯(cuò)誤的處理及errorhandler的應(yīng)用方式_python
- 2022-09-04 python?matplotlib庫(kù)繪圖實(shí)戰(zhàn)之繪制散點(diǎn)圖_python
- 2022-12-02 Android系統(tǒng)狀態(tài)欄定制圖標(biāo)顯示邏輯控制_Android
- 最近更新
-
- 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概述快速入門
- 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)程分支