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

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

分享到微博請遵守國家法律
宕昌县| 永胜县| 普兰县| 罗城| 凌云县| 漯河市| 遂平县| 抚远县| 宜君县| 隆尧县| 启东市| 南平市| 灵石县| 象州县| 广河县| 岑巩县| 海盐县| 桐乡市| 金坛市| 房产| 鄂州市| 当雄县| 房山区| 通化市| 方城县| 盐边县| 陆良县| 繁峙县| 花莲县| 卓资县| 敖汉旗| 蒲江县| 三门峡市| 建湖县| 新田县| 界首市| 乌兰县| 礼泉县| 禹州市| 松阳县| 东港市|