日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Pytorch中關(guān)于BatchNorm2d的參數(shù)解釋_python

作者:顧北向南 ? 更新時(shí)間: 2023-01-13 編程語(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

欄目分類(lèi)
最近更新