最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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筆記的評論 (共 條)

分享到微博請遵守國家法律
兴安县| 江津市| 阳原县| 泉州市| 寻甸| 沁阳市| 桂林市| 城口县| 江油市| 梅州市| 吉首市| 登封市| 驻马店市| 崇义县| 凌海市| 星座| 特克斯县| 兴义市| 郸城县| 奉化市| 阿克陶县| 汶川县| 栾川县| 交城县| 元谋县| 常宁市| 孙吴县| 和硕县| 封开县| 高阳县| 惠东县| 泾阳县| 霞浦县| 新竹市| 蓝山县| 酉阳| 汝南县| 年辖:市辖区| 会理县| 淮北市| 冕宁县|