Ceil_mode = True изменяет заполнение.
В случае режима ceil дополнительные столбцы и строки добавляются как справа, так и внизу. (Не сверху и не слева). Это не должен быть один дополнительный столбец. Это также зависит от значения шага. Я только что написал небольшой фрагмент кода, где вы можете проверить, как заполненные значения объединяются в любом режиме.
Прежде чем я нашел запись , на которую ссылались выше, я тоже экспериментировал с вашей проблемой, также кажется, что заполнение нулями не используется во время операции объединения, так как в моем следующем примере нули были бы максимальными элементами, которые нужно взять, но, похоже, это не так.
test_tensor = torch.FloatTensor(2,7,7).random_(-10,-5)
print(test_tensor)
max_pool = nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True)
print(max_pool(test_tensor))
max_pool = nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=False)
print(max_pool(test_tensor))
Случайный тензор выборки:
tensor([[[ -6., -9., -7., -10., -6., -8., -6.],
[-10., -10., -10., -6., -10., -9., -6.],
[-10., -7., -7., -8., -10., -10., -9.],
[ -8., -10., -10., -9., -9., -10., -9.],
[ -8., -6., -8., -6., -7., -7., -9.],
[-10., -8., -7., -10., -9., -6., -8.],
[-10., -6., -9., -10., -9., -9., -10.]],
[[-10., -8., -6., -10., -9., -6., -7.],
[ -7., -7., -10., -10., -6., -9., -7.],
[ -6., -10., -7., -8., -8., -10., -9.],
[ -8., -8., -6., -7., -6., -8., -6.],
[ -9., -8., -7., -10., -8., -8., -7.],
[-10., -10., -6., -9., -8., -8., -8.],
[-10., -6., -9., -9., -7., -9., -10.]]])
ceil_mode = True
tensor([[[ -6., -6., -6., -6.],
[ -7., -7., -9., -9.],
[ -6., -6., -6., -8.],
[ -6., -9., -9., -10.]],
[[ -7., -6., -6., -7.],
[ -6., -6., -6., -6.],
[ -8., -6., -8., -7.],
[ -6., -9., -7., -10.]]])
ceil_mode = False
tensor([[[-6., -6., -6.],
[-7., -7., -9.],
[-6., -6., -6.]],
[[-7., -6., -6.],
[-6., -6., -6.],
[-8., -6., -8.]]])