Developer Guide for Intel® Data Analytics Acceleration Library 2018 Update 3
The forward two-dimensional (2D) max pooling layer is a form of non-linear downsampling of an input tensor X ∈ R n 1 x n 2 x ... x n p . 2D max pooling partitions the input tensor data into 2D subtensors along dimensions k 1 and k 2, selects an element with the maximal numeric value in each subtensor, and transforms the input tensor to the output tensor Y by replacing each subtensor with its maximum element. For more details, see Forward 2D Max Pooling Layer.
The backward 2D max pooling layer back-propagates the input gradient G ∈ R l 1 x ... x l p computed on the preceding layer. The backward layer propagates to the next layer only the elements of the gradient that correspond to the maximum values pooled from subtensors in the forward computation step.
Given:
p-dimensional tensor G ∈ R l 1 x ... x l p with the gradient computed on the preceding layer
Dimensions k 1 and k 2 along which the kernel is applied
Kernel sizes
m
1 and m2:
where
p
1 and
p
2 are paddings
The problem is to compute the value tensor Z = (z i 1 ...i p ) ∈ R n 1 x ... x n p such that:
s 1 and s 2 are strides
If
m
1 >
s
1 and/or
m
2 >
s
2 and if overlapping subtensors are represented with the same maximum located at the same position in the input tensor
X, the gradient value
z at this position is the sum of input gradients
g
at the respective positions, as shown in the following figure for
m
1 = 3,
m
2 = 2, and
s
1 = 2: