В среднем или максимальном пуле вы по сути устанавливаете шаг и размер ядра самостоятельно, устанавливая их как гиперпараметры. Вам придется перенастроить их, если вам случится изменить размер ввода.
С другой стороны, в Adaptive Pooling мы указываем размер вывода. А шаг и размер ядра выбираются автоматически, чтобы адаптироваться к потребностям. Следующие уравнения используются для вычисления значения в исходном коде.
Stride = (input_size//output_size)
Kernel size = input_size - (output_size-1)*stride
Padding = 0