1. 程式人生 > >caffe原始碼 池化層

caffe原始碼 池化層

1、標題圖示池化層(前向傳播)

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

輸入引數如下:
輸入: 1 * 3 * 4 * 4
池化核: 2 * 2
pad: 0
步長:2
輸出引數如下:
輸出:1 * 3 * 2 * 2

1.1、MAX (max pooling)在視窗中取最大值當做結果

MAX POOLING

1.2、AVG (average pooling)在視窗中取平均值當做結果

AVG POOLING

2、 池化層的反向傳播

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

2.1、MAX (max pooling)

* 如果只看輸出矩陣中的一個點y,則有 y = max( x1 , x2, x3, ... );
* 所以對x求導後有(可以理解成分段函式的求導)

max pooling求導公式
* 程式碼實現:
max 原始碼

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

2.2、 AVG (average pooling)

* 如果只看輸出矩陣中的一個點y,則有 y = ( x1 , x2, x3, ... ,xn )/n;
* 所以對x求導後有

avg 求導公式
* 程式碼實現
avg 原始碼

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