Каково желаемое поведение среднего пула с заполнением? - PullRequest
2 голосов
/ 18 апреля 2019

Недавно я обучил нейронную сеть с использованием pytorch, и в ней есть средний пул-слой с отступами.И меня смущает его поведение и определение среднего пула с заполнением.

Например, если у нас есть входной тензор:

[[1, 2, 3],
 [4, 5, 6],
 [7, 8, 9]]

Когда заполнение равно единицеи размер ядра 3, вход для первого ядра должен быть:

 0, 0, 0
 0, 1, 2
 0, 4, 5

Выход из Pytorch 12/4 = 3 (игнорируя дополненный 0) , но я думаю, что это должно быть 12/9 =1.333

Кто-нибудь может мне это объяснить?

Очень признателен.

1 Ответ

2 голосов
/ 18 апреля 2019

Как правило, вы сами решаете, как вы хотите, чтобы ваш слой пула работал.
Именно поэтому в пуле avg (например, nn.AvgPool2d) есть необязательный параметр count_include_pad=True:
По умолчанию (True) Средний пул будет сначала дополнять ввод, а затем обрабатывать все элементы одинаково.В этом случае результат вашего примера будет действительно 1.33.
С другой стороны, если вы установите count_include_pad=False, слой пула будет игнорировать дополненные элементы, и результат в вашем примере будет 3.

...