1、Pooling
- 取視窗中的值
- max pooling:取視窗最大值
- avg pooling:取視窗平均值
subsampling
- 隔行采樣
2、upsample(上采樣)
(1)F.interpolate(x, scale_factor=2, mode='nearest')
x為輸入
scale_factor為放大倍數
mode為插值方法
插值法
3、ReLU
4、Batch Norm
4.1 出現原因
- 對于sigmoid函數來說,其在小于某個值和大于某個值後,梯度接近于0,不利于優化
- 通過batch norm将輸入變換到某個0附近的空間,同時方差要小,利于梯度優化
4.2 Feature scaling
-
image normalization
以RGB圖像為例,總結R、G、B三通道的平均值M和标準差σ
new = (old - M)/ σ
可以得到一個N(0, 1)的正态分布
-
batch normalization
假設圖檔為(b,c,h,w)
(1)batch norm
c不動,取b個hw的均值。最後會生成一個大小為c的一維張量
(2)layer norm
b不動,取c的hw的均值。最後會生成一個大小為b的一維張量
(3)Instance norm
隻取hw均值。最後生成(b,c)的二維張量
Pytorch學習09——Down/up sample、batch norm1、Pooling2、upsample(上采樣)3、ReLU4、Batch Norm
(1)nn.BatchNorm1d(num_features, eps=1e-05, momentum=0.1, affine=True)
目的:對于二維或三維資料進行操作
參數:num_features為channel的大小,兩者必須比對
affine代表參數γ和β是否要自動學習,true就代表要學習
(2)nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True)
目的:對于四維資料進行操作
參數:num_features為channel的大小,兩者必須比對
(3)layer=nn.BatchNorm1d(x)
通過layer.running_mean和layer.running_var可以得到均值和方差
-
訓練過程
均值和标準差會進行統計,并對全局的running值進行更新
後向傳播時更新參數 β 和 γ
-
測試過程
不會統計測試集的均值和方差,而是直接将訓練時的running值賦給測試集
不會更新 β 和 γ
4.3 batch norm的優點
- 收斂更快
- 表現更好
- 健壯性更強,可以使用更大一點的lr