无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

[DeepLearning]Batch normalization筆記

2023-08-21 00:25 作者:我的愛如開水  | 我要投稿

Batch normalizaion是normalization的一種。BN并不是在數(shù)據(jù)的預(yù)處理階段,而是運用在模型的層與層之間。BN是以batch的粒度進行的,它的作用是用來加快模型的計算速度,能夠在訓(xùn)練以及推理階段用一個相對較高的學(xué)習(xí)率來進行收斂。


在實際的運用中,我們通常將batch normalization層加在激活函數(shù)之前。

整個順序為

  1. Linear transformation; z = g(w, x) + b

  2. Batch normalization; z_n = gamma * (z - mean) / std + beta

  3. Activation function; a = f(z_n)

其中mean為輸入的平均值(以batch作為粒度);std為輸入的標(biāo)準(zhǔn)差;gamma和beta為可學(xué)習(xí)參數(shù),它們的作用時在訓(xùn)練階段修改輸入的分布。

由于在測試/推理階段,輸入的數(shù)據(jù)只有一條,我們不能像在訓(xùn)練階段一樣通過mini-batch獲得對應(yīng)的mean和std。因此在測試/推理階段,我們使用exponentially weighted average來預(yù)估測試/推理階段的mean和std。即使用訓(xùn)練階段各個batch的mean和std來作為測試/推理階段的mean和std。

Exponentially weighted average, 也叫exponential moving average(EMA),是用來將最近的數(shù)據(jù)和以前的數(shù)據(jù)通過加權(quán)的方式來求取新的平均值。在BN的中,每訓(xùn)練一個batch,我們將當(dāng)前batch的mean和std和之前計算的mean和std做加權(quán)平均,通過這樣的方式我們來更新mean和std。因此我們在每訓(xùn)練一個新的batch,我們都會更新mean和std(也叫running mean和running std)。EMA的公式為:

EMA(t) = alpha * data(t) + (1 - alpha) * EMA(t-1)

其中t為時間;alpha是一個取值在0-1之間的一個數(shù),通過修改alpha可以改變新增的數(shù)據(jù)在平均值中的權(quán)重。在BN中alpha通常取0.9。

因此使用在測試/推理階段running_mean和running_std的計算為:

self.running_mean = 0.9 * self.running_mean + 0.1 * current_mean

self.running_std = 0.9 * self.running_std + 0.1 * current_std

在訓(xùn)練階段我們就能得到running mean和running std,然后我們使用這個running mean和running std作為測試/推理階段的mean和std。


[DeepLearning]Batch normalization筆記的評論 (共 條)

分享到微博請遵守國家法律
石狮市| 阳江市| 庆元县| 秀山| 司法| 图们市| 石棉县| 三都| 吴堡县| 石柱| 云南省| 南安市| 尼勒克县| 景泰县| 南郑县| 兰州市| 定日县| 建德市| 东乌珠穆沁旗| 大冶市| 会昌县| 扎赉特旗| 天气| 宜良县| 乌拉特后旗| 洛宁县| 富阳市| 惠州市| 建昌县| 城固县| 宝坻区| 双柏县| 浑源县| 宣化县| 泰顺县| 同江市| 花莲市| 庆安县| 广宗县| 延寿县| 长治县|