在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

BN算法和過程

gVTR_Unf ? 來源: 機器學習煉丹術 ? 作者:機器學習煉丹術 ? 2020-09-07 16:35 ? 次閱讀

1 BN的優(yōu)點

這里簡單的介紹一下BN,在之前的文章中已經(jīng)詳細的介紹了BN算法和過程。

BN于2015年由 Google 提出,Google在ICML論文中描述的非常清晰,即在每次SGD時,通過mini-batch來對相應的activation做規(guī)范化操作,使得結果(輸出信號各個維度)的均值為0,方差為1。最后的“scale and shift”操作則是為了訓練所需而“刻意”加入的BN能夠有可能還原最初的輸入,從而保證數(shù)據(jù)中有用信息的留存。

【BN的好處】

BN使得網(wǎng)絡中每層輸入數(shù)據(jù)的分布相對穩(wěn)定,加速模型學習速度;

BN使得模型對網(wǎng)絡中的參數(shù)不那么敏感,簡化調參過程,使得網(wǎng)絡學習更加穩(wěn)定;

BN允許網(wǎng)絡使用飽和性激活函數(shù)(例如sigmoid,tanh等),緩解梯度消失問題;

BN具有一定的正則化效果。

2 BN的缺點

2.1 受限于Batch size

BN 沿著 batch 維度進行歸一化,其受限于 Batch Size,當 Batch Size 很小時,BN 會得到不準確的統(tǒng)計估計,會導致模型誤差明顯增加

【一般每塊 GPU 上 Batch Size =32 最合適。】

但對于目標檢測,語義分割,視頻場景等,輸入圖像尺寸比較大,而限于GPU顯卡的顯存限制,導致無法設置較大的 Batch Size,如 經(jīng)典的Faster-RCNN、Mask R-CNN 網(wǎng)絡中,由于圖像的分辨率較大,Batch Size 只能是 1 或 2.

2.2 訓練集與測試集的分布

BN處理訓練集的時候,采用的均值和方差是整個訓練集的計算出來的均值和方差(這一部分沒有看懂的話,可能需要去看一下BN算法的詳解)

所以測試和訓練的數(shù)據(jù)分布如果存在差異,那么就會導致訓練和測試之間存在不一致現(xiàn)象(Inconsistency)。

3 Group Normalzation

Group Normalization(GN)是由2018年3月份何愷明團隊提出,GN優(yōu)化了BN在比較小的mini-batch情況下表現(xiàn)不太好的劣勢。

Group Normalization(GN) 則是提出的一種 BN 的替代方法,其是首先將 Channels 劃分為多個 groups,再計算每個 group 內(nèi)的均值和方法,以進行歸一化。GB的計算與Batch Size無關,因此對于高精度圖片小BatchSize的情況也是非常穩(wěn)定的,

下圖是比較BN和GN在Batch Size越來越小的變化中,模型錯誤率變化的對比圖:

因此在實驗的時候,可以在嘗試使用GN來代替BN哦~

其實不難發(fā)現(xiàn),GN和LN是存在一定的關系的。

上圖中有四種Normalization的方法。就先從最簡單的Instance Normalization開始分析:

IN:僅僅對每一個圖片的每一個通道最歸一化。也就是說,對【H,W】維度做歸一化。假設一個特征圖有10個通道,那么就會得到10個均值和10個方差;要是一個batch有5個樣本,每個樣本有10個通道,那么IN總共會計算出50個均值方差;

LN:對一個特征圖的所有通道做歸一化。5個10通道的特征圖,LN會給出5個均值方差;

GN:這個是介于LN和IN之間的一種方法。假設Group分成2個,那么10個通道就會被分成5和5兩組。然后5個10通道特征圖會計算出10個均值方差。

BN:這個就是對Batch維度進行計算。所以假設5個100通道的特征圖的話,就會計算出100個均值方差。5個batch中每一個通道就會計算出來一個均值方差。

在GN的論文中,給出了GN推薦的group Number:

第一個表格展示GN的group Number不斷減小,退化成LN的過程。其實,分組32個group效果最好;

第二個表格展示GN的每一組的channel數(shù)目不斷減小,退化成IN的過程。每一組16個channel的效果最好,我個人在項目中也會有優(yōu)先嘗試16個通道為一組的這種參數(shù)設置。

4 PyTorch實現(xiàn)GN

importnumpyasnp importtorch importtorch.nnasnn classGroupNorm(nn.Module): def__init__(self,num_features,num_groups=32,eps=1e-5): super(GroupNorm,self).__init__() self.weight=nn.Parameter(torch.ones(1,num_features,1,1)) self.bias=nn.Parameter(torch.zeros(1,num_features,1,1)) self.num_groups=num_groups self.eps=eps defforward(self,x): N,C,H,W=x.size() G=self.num_groups assertC%G==0 x=x.view(N,G,-1) mean=x.mean(-1,keepdim=True) var=x.var(-1,keepdim=True) x=(x-mean)/(var+self.eps).sqrt() x=x.view(N,C,H,W)

當然,你要是想問PyTorch是否已經(jīng)集成了GN?那必然的。下面的代碼比較了PyTorch集成的GN和我們手算的GN的結果。

importtorch importtorch.nnasnn x=torch.randn([2,10,3,3])+1 #Torch集成的方法 m=torch.nn.GroupNorm(num_channels=10,num_groups=2) #先計算前面五個通道的均值 firstDimenMean=torch.Tensor.mean(x[0,0:5]) #先計算前面五個通道的方差 firstDimenVar=torch.Tensor.var(x[0,0:5],False) #減去均值乘方差 y2=((x[0][0][0][1]-firstDimenMean)/(torch.pow(firstDimenVar+m.eps,0.5)))*m.weight[0]+m.bias[0] print(y2) y1=m(x) print(m.weight) print(m.bias) print(y1[0,0,0,1])

輸出結果:

tensor(0.4595,grad_fn=) Parametercontaining: tensor([1.,1.,1.,1.,1.,1.,1.,1.,1.,1.],requires_grad=True) Parametercontaining: tensor([0.,0.,0.,0.,0.,0.,0.,0.,0.,0.],requires_grad=True) tensor(0.4595,grad_fn=)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Google
    +關注

    關注

    5

    文章

    1787

    瀏覽量

    58679
  • 圖像
    +關注

    關注

    2

    文章

    1092

    瀏覽量

    41031
  • pytorch
    +關注

    關注

    2

    文章

    809

    瀏覽量

    13769

原文標題:小白學圖像 | Group Normalization詳解+PyTorch代碼

文章出處:【微信號:Unfinished_coder,微信公眾號:機器視覺CV】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    FN1-05D3V3BN FN1-05D3V3BN

    電子發(fā)燒友網(wǎng)為你提供AIPULNION(AIPULNION)FN1-05D3V3BN相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有FN1-05D3V3BN的引腳圖、接線圖、封裝手冊、中文資料、英文資料,F(xiàn)N1-05D3V3BN真值表,F(xiàn)N1-05
    發(fā)表于 03-19 18:43
    FN1-05D3V3<b class='flag-5'>BN</b> FN1-05D3V3<b class='flag-5'>BN</b>

    PID控制算法的C語言實現(xiàn):PID算法原理

    在工業(yè)應用中 PID 及其衍生算法是應用最廣泛的算法之一,是當之無愧的萬能算法,如果能夠熟練掌握 PID 算法的設計與實現(xiàn)過程,對于一般的研
    發(fā)表于 02-26 15:24

    MDMF304L1GAM-MINAS A6BN 系列 標準規(guī)格書 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MDMF304L1GAM-MINAS A6BN 系列 標準規(guī)格書相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MDMF304L1GAM-MINAS A6BN
    發(fā)表于 02-12 18:53
    MDMF304L1GAM-MINAS A6<b class='flag-5'>BN</b> 系列 標準規(guī)格書 松下

    MDMF304A1GAM-MINAS A6BN 系列 標準規(guī)格書 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MDMF304A1GAM-MINAS A6BN 系列 標準規(guī)格書相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MDMF304A1GAM-MINAS A6BN
    發(fā)表于 02-05 18:55
    MDMF304A1GAM-MINAS A6<b class='flag-5'>BN</b> 系列 標準規(guī)格書 松下

    深入解析ECC256橢圓曲線加密算法

    點擊藍字關注我們一、加密算法概述數(shù)據(jù)加密的基本過程就是對原來為明文的文件或數(shù)據(jù)按某種算法進行處理,使其成為不可讀的一段代碼為“密文”,使其只能在輸入相應的密鑰之后才能顯示出原容,通過這樣的途徑來達到
    的頭像 發(fā)表于 12-26 16:32 ?1627次閱讀
    深入解析ECC256橢圓曲線加密<b class='flag-5'>算法</b>

    MHMF082L81N-MINAS A6BN 系列 標準規(guī)格書 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MHMF082L81N-MINAS A6BN 系列 標準規(guī)格書相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MHMF082L81N-MINAS A6BN
    發(fā)表于 12-06 18:41
    MHMF082L81N-MINAS A6<b class='flag-5'>BN</b> 系列 標準規(guī)格書 松下

    MHMF082L71N-MINAS A6BN 系列 標準規(guī)格書 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MHMF082L71N-MINAS A6BN 系列 標準規(guī)格書相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MHMF082L71N-MINAS A6BN
    發(fā)表于 12-03 18:55
    MHMF082L71N-MINAS A6<b class='flag-5'>BN</b> 系列 標準規(guī)格書 松下

    【BearPi-Pico H3863星閃開發(fā)板體驗連載】LZO壓縮算法移植

    正常通過編譯,后續(xù)才能調試代碼的功能。 在HiSpark Studio移植LZO算法,遇到一些坑, 編譯報錯 : 編譯報錯是移植代碼過程中常見的錯誤,為什么HiSpark Studi算是一個坑呢?LZO
    發(fā)表于 11-10 21:45

    AIGC算法解析及其發(fā)展趨勢

    、AIGC算法解析 核心基礎 人工智能算法 :AIGC技術的基礎和靈魂,如深度學習、機器學習等算法,使機器能夠模擬人類的思考和行為過程,從而自主地完成各種任務。這些
    的頭像 發(fā)表于 10-25 15:35 ?1285次閱讀

    充電也要算法?儲能充電芯片中的算法處理器

    電子發(fā)燒友網(wǎng)報道(文/黃山明)充電算法處理器是一種專門設計用于執(zhí)行充電算法的微處理器或ASIC,這些算法可以優(yōu)化電池的充電過程,提高充電效率,延長電池壽命,并確保充電安全。這種處理器通
    的頭像 發(fā)表于 07-30 00:07 ?4111次閱讀

    圖像識別算法都有哪些方法

    圖像識別算法是計算機視覺領域的核心任務之一,它涉及到從圖像中提取特征并進行分類、識別和分析的過程。隨著深度學習技術的不斷發(fā)展,圖像識別算法已經(jīng)取得了顯著的進展。本文將介紹圖像識別算法
    的頭像 發(fā)表于 07-16 11:14 ?7176次閱讀

    信號采樣的算法原理是什么

    信號采樣是一種將連續(xù)信號轉換為離散信號的過程,它是數(shù)字信號處理的基礎。本文將詳細介紹信號采樣的算法原理,包括采樣過程、采樣定理、采樣方法、采樣率、量化誤差、抗混疊濾波器、插值技術等方面的內(nèi)容。 采樣
    的頭像 發(fā)表于 07-15 14:20 ?1946次閱讀

    bp神經(jīng)網(wǎng)絡算法過程包括

    算法過程,包括網(wǎng)絡結構、激活函數(shù)、訓練過程、反向傳播算法、權重更新策略等。 網(wǎng)絡結構 BP神經(jīng)網(wǎng)絡由輸入層、隱藏層和輸出層組成,每層包含若干神經(jīng)元。輸入層的神經(jīng)元數(shù)量與問題的特征維度
    的頭像 發(fā)表于 07-04 09:45 ?803次閱讀

    神經(jīng)網(wǎng)絡反向傳播算法的推導過程

    反向傳播算法的推導過程,包括前向傳播、損失函數(shù)、梯度計算和權重更新等步驟。 前向傳播 前向傳播是神經(jīng)網(wǎng)絡中信息從輸入層到輸出層的傳遞過程。在多層前饋神經(jīng)網(wǎng)絡中,每個神經(jīng)元都與前一層的所有神經(jīng)元相連,并通過激活函數(shù)進行非線性變換。
    的頭像 發(fā)表于 07-03 11:13 ?961次閱讀

    深度學習模型訓練過程詳解

    深度學習模型訓練是一個復雜且關鍵的過程,它涉及大量的數(shù)據(jù)、計算資源和精心設計的算法。訓練一個深度學習模型,本質上是通過優(yōu)化算法調整模型參數(shù),使模型能夠更好地擬合數(shù)據(jù),提高預測或分類的準確性。本文將
    的頭像 發(fā)表于 07-01 16:13 ?2431次閱讀
    主站蜘蛛池模板: 5月婷婷6月丁香 | 丝袜美腿视频一区二区三区 | 国产免费一区二区三区在线 | 女生张开腿让男人桶 | 四虎一影院区永久精品 | 人人草人 | 男人j桶进女人免费视频 | 日本人xxxxxxxxxⅹ68 | 亚洲天堂网站在线 | 免费成人黄色 | 91视频免费网站 | 欧美亚洲啪啪 | 天天躁狠狠躁夜夜躁2021 | 黄大片18满岁水多 | 五月天婷婷丁香中文在线观看 | 夜夜夜操 | 国产tube| 一区二区影视 | 美国69bjfree18vide视频 | 国模私拍在线 | 亚洲视频www | 五月综合色 | 在线日韩一区 | 久久鬼| 在线看黄的网站 | 日日夜夜天天人人 | 男女交性视频免费播放 | 成人免费看黄网站无遮挡 | 黄色片网站大全 | 美女中出视频 | 久久综合五月婷婷 | 欧美一区二区视频 | 天天挨操 | 性欧美在线 | 黄色三级录像 | 欲色影视| 国产精品虐乳在线播放 | 久久天天躁狠狠躁夜夜呲 | 久久久噜久噜久久gif动图 | 四虎国产精品影库永久免费 | 手机看片国产免费久久网 |