天天看點

Pytorch學習記錄(十):資料預處理+Batch Normalization批處理(BN)

資料預處理

目前資料預處理最常見的方法就是中心化和标準化,中心化相當于修正資料的中心位置,實作方法非常簡單,就是在每個特征次元上減去對應的均值,最後得到 0 均值()像素範圍在[-128,127],以0為中心的特征。标準化也非常簡單,在資料變成 0 均值之後,為了使得不同的特征次元有着相同的規模,可以除以标準差近似為一個标準正态分布,也可以依據最大值和最小值将其轉化為 -1 ~ 1 之間。

Batch Normalization批處理(BN)

批标準化,簡而言之,就是對于每一層網絡的輸出,對其做一個歸一化,使其服從标準的正态分布,這樣後一層網絡的輸入也是一個标準的正态分布,是以能夠比較好的進行訓練,加快收斂速度。

Pytorch學習記錄(十):資料預處理+Batch Normalization批處理(BN)

第一行和第二行是計算出一個 batch 中資料的均值和方差,接着使用第三個公式對 batch 中的每個資料點做标準化, 𝜖 是為了計算穩定引入的一個小的常數,通常取 10−5 ,最後利用權重修正得到最後的輸出結果,非常的簡單,下面我們可以實作一下簡單的一維的情況,也就是神經網絡中的情況

https://www.cnblogs.com/yongjieShi/p/9332655.html

https://zhuanlan.zhihu.com/p/69431151

nn.BatchNorm2d

from torch import nn
import torch

m = nn.BatchNorm2d(3)  # bn設定的參數實際上是channel的參數
input = torch.randn(4, 3, 2, 2)
output = m(input)
           

繼續閱讀