Класс MaxPool2d
Класс MaxPool2d из модуля torch.nn применяет операцию двумерного максимального пулинга к входным данным. Этот слой уменьшает пространственные размеры входного тензора, извлекая максимальное значение в каждой области, определяемой размером окна. Первым параметром передается размер окна пулинга, вторым - шаг. Класс широко используется в сверточных нейросетях для уменьшения размерности и выделения наиболее значимых признаков.
Синтаксис
torch.nn.MaxPool2d(
kernel_size,
stride=None,
padding=0,
dilation=1,
return_indices=False,
ceil_mode=False
)
Пример
Создадим простой слой пулинга с окном 2x2 и шагом 2, применим к тензору размера 4x4:
import torch
t = torch.tensor([
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
]).float().unsqueeze(0).unsqueeze(0)
pool = torch.nn.MaxPool2d(kernel_size=2, stride=2)
res = pool(t)
print(res)
Результат выполнения кода:
tensor([[[[ 6., 8.],
[14., 16.]]]])
Пример
Используем слой с окном 3x3 и шагом 1, добавив отступы для сохранения размерности:
import torch
t = torch.tensor([
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]
]).float().unsqueeze(0).unsqueeze(0)
pool = torch.nn.MaxPool2d(
kernel_size=3,
stride=1,
padding=1
)
res = pool(t)
print(res.shape)
Результат выполнения кода:
torch.Size([1, 1, 5, 5])
Пример
Покажем работу параметра return_indices, который возвращает индексы максимальных элементов:
import torch
t = torch.tensor([
[1, 3, 2, 4],
[5, 7, 6, 8],
[9, 11, 10, 12],
[13, 15, 14, 16]
]).float().unsqueeze(0).unsqueeze(0)
pool = torch.nn.MaxPool2d(
kernel_size=2,
stride=2,
return_indices=True
)
res, indices = pool(t)
print("Output:")
print(res)
print("\nIndices:")
print(indices)
Результат выполнения кода:
Output:
tensor([[[[ 7., 8.],
[15., 16.]]]])
Indices:
tensor([[[[5, 7],
[13, 15]]]])
Смотрите также
-
класс
MaxPool1d,
который выполняет одномерный максимальный пулинг -
класс
MaxPool3d,
который выполняет трехмерный максимальный пулинг -
класс
AvgPool2d,
который выполняет двумерный средний пулинг -
класс
AdaptiveMaxPool2d,
который выполняет адаптивный максимальный пулинг до заданного размера