国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深度學(xué)習(xí)Batch Normalization

這篇具有很好參考價(jià)值的文章主要介紹了深度學(xué)習(xí)Batch Normalization。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

批標(biāo)準(zhǔn)化(Batch Normalization,簡稱BN)是一種用于深度神經(jīng)網(wǎng)絡(luò)的技術(shù),它的主要目的是解決深度學(xué)習(xí)模型訓(xùn)練過程中的內(nèi)部協(xié)變量偏移問題。簡單來說,當(dāng)我們在訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)時(shí),每一層的輸入分布都可能會隨著前一層參數(shù)的更新而發(fā)生變化,這種變化會導(dǎo)致訓(xùn)練過程變得不穩(wěn)定。BN通過對每一層的輸入進(jìn)行標(biāo)準(zhǔn)化,使其均值為0,方差為1,從而使得網(wǎng)絡(luò)在每一層都能接收到相對穩(wěn)定的數(shù)據(jù)分布。

BatchNorm1d

對2d或3d數(shù)據(jù)進(jìn)行批標(biāo)準(zhǔn)化(Batch Normlization)操作:

class torch.nn.BatchNorm1d(num_features, eps=1e-05, momentum=0.1, affine=True):

參數(shù):

1.num_features:特征的維度 ( N , L ) ? > L ; ( N , C , L ) ? > C (N,L) -> L ;(N,C,L) -> C (N,L)?>L;(N,C,L)?>C

2.eps:在分母上添加一個(gè)定值,不能趨近于0

3.momentum:動(dòng)態(tài)均值和動(dòng)態(tài)方差所使用的動(dòng)量,這里的momentum是對均值和方差進(jìn)行的滑動(dòng)平均。即 μ 1 = ( 1 ? m o m e n t u m ) ? μ l a s t + m o m e n t u m ? μ μ_1 = (1 - momentum)* μ_{last} + momentum * μ μ1?=1?momentum?μlast?+momentum?μ,這里μ1為輸出值,μ_last為上一次的計(jì)算值,μ為真實(shí)計(jì)算的值

4.affine:布爾變量,是否為該層添加可學(xué)習(xí)的仿設(shè)變換,仿射變換的系數(shù)即為下式的gamma和beta

原理:

計(jì)算各個(gè)維度的均值和標(biāo)準(zhǔn)差: y = x ? mean ? [ x ] Var ? [ x ] + ? ? g a m m a + ?beta? y=\frac{x-\operatorname{mean}[x]}{\sqrt{\operatorname{Var}[x]}+\epsilon} * g a m m a+\text { beta } y=Var[x] ?+?x?mean[x]??gamma+?beta?

m = nn.BatchNorm1d(5, affine=False)
m1 = nn.BatchNorm1d(5, affine=True)
input = autograd.Variable(torch.randn(5, 5))
output = m(input)
output1 = m1(input)
print(input, '\n',output,'\n',output1)

tensor([[-0.6046, -0.8939,  1.3246,  0.2621,  1.0777],
        [ 0.9088, -0.6219,  0.9589,  0.7307,  0.5221],
        [ 1.7435,  0.6662, -0.5827,  0.3325, -0.8179],
        [-0.2250,  0.9930,  0.0504, -0.4509,  1.6605],
        [-0.5742,  1.6543,  0.6083,  0.5746, -0.3208]]) 
 tensor([[-0.9212, -1.2920,  1.2648, -0.0680,  0.7249],
        [ 0.7107, -1.0117,  0.7224,  1.0842,  0.1085],
        [ 1.6108,  0.3161, -1.5642,  0.1049, -1.3780],
        [-0.5119,  0.6530, -0.6252, -1.8215,  1.3713],
        [-0.8885,  1.3345,  0.2022,  0.7005, -0.8266]]) 
 tensor([[-0.9212, -1.2920,  1.2648, -0.0680,  0.7249],
        [ 0.7107, -1.0117,  0.7224,  1.0842,  0.1085],
        [ 1.6108,  0.3161, -1.5642,  0.1049, -1.3780],
        [-0.5119,  0.6530, -0.6252, -1.8215,  1.3713],
        [-0.8885,  1.3345,  0.2022,  0.7005, -0.8266]],
       grad_fn=<NativeBatchNormBackward>)

BatchNorm2d

對小批量(mini-batch)3d數(shù)據(jù)組成的4d輸入進(jìn)行批標(biāo)準(zhǔn)化(Batch Normalization)操作

class torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True):

1.num_features: 來自期望輸入的特征數(shù),C from an expected input of size (N,C,H,W)

2.eps: 為保證數(shù)值穩(wěn)定性(分母不能趨近或取0),給分母加上的值。默認(rèn)為1e-5.

3.momentum: 動(dòng)態(tài)均值和動(dòng)態(tài)方差所使用的動(dòng)量。默認(rèn)為0.1.

4.affine: 一個(gè)布爾值,當(dāng)設(shè)為true,給該層添加可學(xué)習(xí)的仿射變換參數(shù)。

原理:

計(jì)算各個(gè)維度的均值和標(biāo)準(zhǔn)差: y = x ? mean ? [ x ] Var ? [ x ] + ? ? g a m m a + ?beta? y=\frac{x-\operatorname{mean}[x]}{\sqrt{\operatorname{Var}[x]}+\epsilon} * g a m m a+\text { beta } y=Var[x] ?+?x?mean[x]??gamma+?beta?

m = nn.BatchNorm2d(2, affine=False)
m1 = nn.BatchNorm2d(2, affine=True)
input = autograd.Variable(torch.randn(1,2,5, 5))
output = m(input)
output1 = m1(input)
print(input, '\n',output,'\n',output1)


tensor([[[[-0.2606, -0.8874,  0.8364,  0.0184,  0.8040],
          [ 1.0593, -0.6811,  1.3497, -0.6840, -2.0859],
          [-0.5399,  1.3321, -0.6281, -0.9044,  1.7491],
          [ 0.7559,  0.5607, -0.0447, -0.3868,  1.2404],
          [ 1.2078, -0.9642,  0.3980,  0.2087, -1.3940]],

         [[ 0.0493,  0.7372,  1.1964,  0.3862,  0.9900],
          [ 0.3544,  0.1767, -1.5780,  0.1642, -2.1586],
          [-0.4891, -0.7272,  1.6860, -1.6091,  0.9730],
          [-2.4161, -2.2096,  0.4617, -0.2965, -0.5663],
          [-0.0222, -0.7628,  0.6404, -1.4428,  0.5750]]]]) 
 tensor([[[[-0.3522, -0.9959,  0.7743, -0.0657,  0.7410],
          [ 1.0032, -0.7840,  1.3015, -0.7870, -2.2266],
          [-0.6390,  1.2833, -0.7296, -1.0134,  1.7116],
          [ 0.6917,  0.4912, -0.1305, -0.4818,  1.1892],
          [ 1.1557, -1.0748,  0.3242,  0.1298, -1.5161]],

         [[ 0.2560,  0.8743,  1.2870,  0.5588,  1.1015],
          [ 0.5302,  0.3705, -1.2066,  0.3593, -1.7285],
          [-0.2280, -0.4420,  1.7271, -1.2346,  1.0862],
          [-1.9599, -1.7743,  0.6266, -0.0549, -0.2974],
          [ 0.1917, -0.4739,  0.7873, -1.0852,  0.7285]]]]) 
 tensor([[[[-0.3522, -0.9959,  0.7743, -0.0657,  0.7410],
          [ 1.0032, -0.7840,  1.3015, -0.7870, -2.2266],
          [-0.6390,  1.2833, -0.7296, -1.0134,  1.7116],
          [ 0.6917,  0.4912, -0.1305, -0.4818,  1.1892],
          [ 1.1557, -1.0748,  0.3242,  0.1298, -1.5161]],

         [[ 0.2560,  0.8743,  1.2870,  0.5588,  1.1015],
          [ 0.5302,  0.3705, -1.2066,  0.3593, -1.7285],
          [-0.2280, -0.4420,  1.7271, -1.2346,  1.0862],
          [-1.9599, -1.7743,  0.6266, -0.0549, -0.2974],
          [ 0.1917, -0.4739,  0.7873, -1.0852,  0.7285]]]],
       grad_fn=<NativeBatchNormBackward>)

使用

用的地方通常在一個(gè)全連接或者卷積層與激活函數(shù)中間,即 (全連接/卷積)—- BatchNorm —- 激活函數(shù)。但也有人說把 BatchNorm 放在激活函數(shù)后面效果更好,可以都試一下。

BN的作用:

  1. 加速訓(xùn)練:BN可以使得網(wǎng)絡(luò)的訓(xùn)練速度更快。因?yàn)榻?jīng)過標(biāo)準(zhǔn)化后,權(quán)重的更新方向更加明確,可以使用更大的學(xué)習(xí)率進(jìn)行訓(xùn)練。
  2. 正則化效果:BN具有輕微的正則化效果,可以在一定程度上防止模型過擬合。
  3. 允許使用各種激活函數(shù):在沒有BN之前,某些激活函數(shù)(如sigmoid和tanh)在深層網(wǎng)絡(luò)中容易導(dǎo)致梯度消失或梯度爆炸。但使用BN后,這些問題得到了緩解,因?yàn)閿?shù)據(jù)分布被標(biāo)準(zhǔn)化了。

為什么要用

BN的作用

  1. 加速訓(xùn)練:BN可以使得網(wǎng)絡(luò)的訓(xùn)練速度更快。因?yàn)榻?jīng)過標(biāo)準(zhǔn)化后,權(quán)重的更新方向更加明確,可以使用更大的學(xué)習(xí)率進(jìn)行訓(xùn)練。
  2. 正則化效果:BN具有輕微的正則化效果,可以在一定程度上防止模型過擬合。
  3. 允許使用各種激活函數(shù):在沒有BN之前,某些激活函數(shù)(如sigmoid和tanh)在深層網(wǎng)絡(luò)中容易導(dǎo)致梯度消失或梯度爆炸。但使用BN后,這些問題得到了緩解,因?yàn)閿?shù)據(jù)分布被標(biāo)準(zhǔn)化了。

參考

(31條消息) BatchNorm2d原理、作用及其pytorch中BatchNorm2d函數(shù)的參數(shù)講解_LS_learner的博客-CSDN博客_batchnorm2d

(31條消息) pytorch中批量歸一化BatchNorm1d和BatchNorm2d函數(shù)_小白827的博客-CSDN博客_batchnorm1d 2d

BatchNorm 到底應(yīng)該怎么用? - 項(xiàng)脊軒的琵琶樹 (gitee.io)文章來源地址http://www.zghlxwxcb.cn/news/detail-659137.html

到了這里,關(guān)于深度學(xué)習(xí)Batch Normalization的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【卷積層、BN層(Batch Normalization)、激活函數(shù)理解】

    【卷積層、BN層(Batch Normalization)、激活函數(shù)理解】

    卷積層的功能:對數(shù)據(jù)進(jìn)行特征提取。 卷積層由輸出特征面組成,每個(gè)特征面有無數(shù)個(gè)神經(jīng)元(像素點(diǎn))組成。其中輸出特征面的每個(gè)神經(jīng)元是通過卷積核對輸入特征面中的每個(gè)神經(jīng)元進(jìn)行卷積操作得到的。 一個(gè)卷積核產(chǎn)生一張?zhí)卣鲌D,n個(gè)卷積核產(chǎn)生n個(gè)特征圖。卷積核的設(shè)

    2024年02月07日
    瀏覽(21)
  • DNNGP模型解讀-early stopping 和 batch normalization的使用

    DNNGP模型解讀-early stopping 和 batch normalization的使用

    一、考慮的因素(僅代表個(gè)人觀點(diǎn)) 1.首先我們看到他的這篇文章所考慮的不同方面從而做出的不同改進(jìn),首先考慮到了對于基因組預(yù)測的深度學(xué)習(xí)方法的設(shè)計(jì)?,我們設(shè)計(jì)出來這個(gè)方法就是為了基因組預(yù)測而使用,這也是主要目的,所以要抓住事物的主要方面。 2.DNNGP相比于

    2024年02月12日
    瀏覽(24)
  • 深度學(xué)習(xí)中epoch、batch、batch size和iterations詳解

    1.epoch 在訓(xùn)練一個(gè)模型時(shí)所用到的全部數(shù)據(jù); 備注:一般在訓(xùn)練時(shí)都要使用多于一個(gè)的epoch,因?yàn)樵谏窠?jīng)網(wǎng)絡(luò)中傳遞完整的數(shù)據(jù)集僅僅一次是不夠的,只有將完整的數(shù)據(jù)集在同樣的神經(jīng)網(wǎng)絡(luò)中傳遞多次,才會得到比較優(yōu)秀的訓(xùn)練效果,當(dāng)然也不行,容易過擬合,所以要根據(jù)實(shí)

    2023年04月25日
    瀏覽(29)
  • pytorch10:正則化(weight_decay、dropout、Batch Normalization)

    pytorch10:正則化(weight_decay、dropout、Batch Normalization)

    往期回顧 pytorch01:概念、張量操作、線性回歸與邏輯回歸 pytorch02:數(shù)據(jù)讀取DataLoader與Dataset、數(shù)據(jù)預(yù)處理transform pytorch03:transforms常見數(shù)據(jù)增強(qiáng)操作 pytorch04:網(wǎng)絡(luò)模型創(chuàng)建 pytorch05:卷積、池化、激活 pytorch06:權(quán)重初始化 pytorch07:損失函數(shù)與優(yōu)化器 pytorch08:學(xué)習(xí)率調(diào)整策略

    2024年02月01日
    瀏覽(35)
  • 深度學(xué)習(xí)中Epoch和Batch Size的關(guān)系

    在深度學(xué)習(xí)中,Epoch(周期)和 Batch Size(批大?。┦怯?xùn)練神經(jīng)網(wǎng)絡(luò)時(shí)經(jīng)常使用的兩個(gè)重要的超參數(shù)。它們之間的關(guān)系是通過以下方式連接的: Epoch 表示整個(gè)訓(xùn)練數(shù)據(jù)集被神經(jīng)網(wǎng)絡(luò)完整地通過了一次。在一個(gè) Epoch 內(nèi),神經(jīng)網(wǎng)絡(luò)會看到訓(xùn)練數(shù)據(jù)集中的所有樣本一次,進(jìn)行前向傳

    2024年01月16日
    瀏覽(24)
  • 深度學(xué)習(xí)記錄--mini-batch gradient descent

    深度學(xué)習(xí)記錄--mini-batch gradient descent

    batch:段,塊 與傳統(tǒng)的batch梯度下降不同,mini-batch gradient descent將數(shù)據(jù)分成多個(gè)子集,分別進(jìn)行處理,在 數(shù)據(jù)量非常巨大 的情況下,這樣處理可以及時(shí)進(jìn)行梯度下降,大大加快訓(xùn)練速度 兩種方法的梯度下降圖如下圖所示 batch gradient descent是一條正常的 遞減 的曲線 mini-batch

    2024年01月21日
    瀏覽(28)
  • 深度學(xué)習(xí)中,什么是batch-size?如何設(shè)置?

    batch-size 是深度學(xué)習(xí)模型在訓(xùn)練過程中一次性輸入給模型的樣本數(shù)量。它在訓(xùn)練過程中具有重要的意義,影響著訓(xùn)練速度、內(nèi)存使用以及模型的穩(wěn)定性等方面。 以下是 batch-size 大小的一些影響和意義: 訓(xùn)練速度 :較大的 batch-size 通??梢约涌煊?xùn)練速度,因?yàn)樵诿看蔚刑?/p>

    2024年02月12日
    瀏覽(30)
  • 深入理解ECAPA-TDNN——兼談Res2Net、ASP統(tǒng)計(jì)池化、SENet、Batch Normalization

    深入理解ECAPA-TDNN——兼談Res2Net、ASP統(tǒng)計(jì)池化、SENet、Batch Normalization

    ECAPA-TDNN是說話人識別中基于TDNN的神經(jīng)網(wǎng)絡(luò),是目前最好的單體模型之一 關(guān)于TDNN,可以參考深入理解TDNN(Time Delay Neural Network)——兼談x-vector網(wǎng)絡(luò)結(jié)構(gòu) TDNN本質(zhì)上是1維卷積,而且常常是1維膨脹卷積,這樣的一種結(jié)構(gòu)非常注重context,也就是上下文信息,具體而言,是在frame

    2024年02月03日
    瀏覽(39)
  • 深度學(xué)習(xí)中epoch、batch、step、iteration等神經(jīng)網(wǎng)絡(luò)參數(shù)是什么意思?

    epoch: 表示將訓(xùn)練數(shù)據(jù)集中的所有樣本都過一遍 (且僅過一遍)的訓(xùn)練過程。在一個(gè)epoch中,訓(xùn)練算法會按照設(shè)定的順序?qū)⑺袠颖据斎肽P瓦M(jìn)行前向傳播、計(jì)算損失、反向傳播和參數(shù)更新。一個(gè)epoch通常包含多個(gè)step。 batch:一般翻譯為“批次”,表示一次性輸入模型的一組

    2024年02月10日
    瀏覽(30)
  • 【深度學(xué)習(xí)】神經(jīng)網(wǎng)絡(luò)中 Batch 和 Epoch 之間的區(qū)別是什么?我們該如何理解?

    隨機(jī)梯度下降(Stochastic Gradient Descent,SGD)是一種優(yōu)化算法,用于在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中更新模型參數(shù),以最小化損失函數(shù)。與傳統(tǒng)的梯度下降算法不同,SGD在每次參數(shù)更新時(shí)只使用一個(gè)樣本(或一小批樣本),而不是使用整個(gè)訓(xùn)練數(shù)據(jù)集。這使得SGD具有更快的收斂速度,

    2024年02月10日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包