天天看點

Pytorch學習09——Down/up sample、batch norm1、Pooling2、upsample(上采樣)3、ReLU4、Batch Norm

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
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

繼續閱讀