PyTorch provides max pooling and adaptive max pooling.
Both, max pooling and adaptive max pooling, is defined in three dimensions: 1d, 2d and 3d. For simplicity, I am discussing about 1d in this question.
For max pooling in one dimension, the documentation provides the formula to calculate the output.
In the simplest case, the output value of the layer with input size $(N,C,L)$ and output $(N,C,L_{out})$ can be precisely described as:
$$out(N_i,C_j,k) = \max\limits_{m=0, \cdots ,kernel\_size−1} input(N_i,C_j,stride×k+m)$$
But, adaptive max pooling has no detailed explanation in the documentation.
What is the fundamental difference between max pooling and adaptive max-pooling? max-pooling expects kernel_size
and stride
as input but adaptive max-pooling does not expect them as inputs and asks only for output size, does it uses kernel and stride for performing the operation? If yes, how does it calculate both?