Caffe:Api:PoolingLayer
Pooling caffe layer class.
PoolingParameter
- kernel_size (or kernel_h and kernel_w)
- specifies height and width of each filter
- pool [default MAX]
- the pooling method. Currently MAX, AVE, or STOCHASTIC
- pad (or pad_h and pad_w) [default 0]
- specifies the number of pixels to (implicitly) add to each side of the input
- stride (or stride_h and stride_w) [default 1]
- specifies the intervals at which to apply the filters to the input
- global_pooling [default false]
- If global_pooling then it will pool over the size of the bottom by doing kernel_h = bottom->height and kernel_w = bottom->width
Protobuf example
layer {
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
pooling_param {
pool: MAX
kernel_size: 3 # pool over a 3x3 region
stride: 2 # step two pixels (in the bottom blob) between pooling regions
}
}
I/O
- Input
- n * c_i * h_i * w_i
- Output
- n * c_o * h_o * w_o
- h_o = (h_i + 2 * pad_h - kernel_h) / stride_h + 1
- w_o = (w_i + 2 * pad_w - kernel_w) / stride_w + 1
Max-pooling Graph
- Original
10 | 20 |
30 | 40 |
- Forward
40 |
Max-pooling Backpropagation
Pooling된 데이터의 Index를 기억하여 diff값을 전파한다. 위의 #Max-pooling Graph예제를 사용하면 아래와 같다.
0 | 0 |
0 | diff |
전파된 diff값은 다음 레이어에 그대로 전달된다.
Backpropagation reference
BackPropagation_MaxPool.png
See also
- Caffe
- Caffe:Api
- Caffe:Api:NeuronLayer
- Caffe:Api:ConvolutionLayer
- Activation function