1. 程式人生 > >caffe源碼 池化層 反向傳播

caffe源碼 池化層 反向傳播

C4D alt convert ec2 ted 操作 src 技術 space

圖示池化層(前向傳播)

池化層其實和卷積層有點相似,有個類似卷積核的窗口按照固定的步長在移動,每個窗口做一定的操作,按照這個操作的類型可以分為兩種池化層:

輸入參數如下:
輸入: 1 * 3 * 4 * 4
池化核: 4 * 4
pad: 0
步長:2
輸出參數如下:
輸出:1 * 3 * 2 * 2
  • MAC (max pooling)在窗口中取最大值當做結果
  • 技術分享
  • AVG (average pooling)在窗口中取平均值當做結果
  • 技術分享

池化層的反向傳播

按照前向傳播的分類,反向傳播也需要分成兩類

  • MAC (max pooling)

    • 如果只看輸出矩陣中的一個點y,則有 y = max( x1 , x2, x3, ... );

    • 所以對x求導後有(可以理解成分段函數的求導)

      技術分享

    • 代碼實現:

      技術分享

      可見上圖,這個xn如果影響多個y,則會疊加起來

  • AVG (average pooling)

    • 如果只看輸出矩陣中的一個點y,則有 y = ( x1 , x2, x3, ... ,xn )/n;

    • 所以對x求導後有

      技術分享

    • 代碼實現

      技術分享

      可見上圖,這個xn如果影響多個y,則會疊加起來

caffe源碼 池化層 反向傳播