РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
416 of 769 menu

Функция F.max_pool2d

Функция F.max_pool2d применяет двумерную операцию максимального пулинга (max pooling) к входному тензору. Она уменьшает пространственные размеры (высоту и ширину) тензора, выбирая максимальное значение в каждом окне заданного размера. Это помогает выделить наиболее значимые признаки и снизить вычислительную сложность последующих слоёв. Первым параметром функция принимает входной тензор, вторым параметром - размер окна пулинга (kernel size). Также можно задать шаг (stride), отступы (padding) и другие параметры.

Синтаксис

torch.nn.functional.max_pool2d(input, kernel_size, stride=None, padding=0, dilation=1, ceil_mode=False, return_indices=False)

Основные параметры

Функция принимает следующие основные параметры:

  • input - входной тензор размерностью (batch, channels, height, width)
  • kernel_size - размер окна пулинга (int или кортеж из двух чисел)
  • stride - шаг окна (по умолчанию равен kernel_size)
  • padding - отступы по краям (по умолчанию 0)
  • dilation - шаг между элементами окна (по умолчанию 1)
  • ceil_mode - если True, использует округление вверх для вычисления размера выхода (по умолчанию False)
  • return_indices - если True, возвращает индексы максимальных элементов (по умолчанию False)

Пример

Давайте применим операцию макспулинга к небольшому двумерному тензору с окном 2x2 и шагом 2:

import torch import torch.nn.functional as F t = torch.tensor([ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16] ], dtype=torch.float) t = t.unsqueeze(0).unsqueeze(0) # Добавляем размерности batch и channels res = F.max_pool2d(t, kernel_size=2, stride=2) print(res)

Результат выполнения кода:

tensor([[ [ 6., 8.], [14., 16.] ]])

Пример

Используем отступы (padding) для сохранения размерности выходного тензора:

import torch import torch.nn.functional as F t = torch.tensor([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ], dtype=torch.float) t = t.unsqueeze(0).unsqueeze(0) res = F.max_pool2d(t, kernel_size=2, stride=1, padding=1) print(res)

Результат выполнения кода:

tensor([[ [5., 6., 6.], [8., 9., 9.], [8., 9., 9.] ]])

Пример

Используем параметр ceil_mode для управления размерами выходного тензора:

import torch import torch.nn.functional as F 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] ], dtype=torch.float) t = t.unsqueeze(0).unsqueeze(0) res1 = F.max_pool2d(t, kernel_size=2, stride=2, ceil_mode=False) res2 = F.max_pool2d(t, kernel_size=2, stride=2, ceil_mode=True) print("ceil_mode=False:") print(res1) print("ceil_mode=True:") print(res2)

Результат выполнения кода:

ceil_mode=False: tensor([[ [ 7., 9.], [17., 19.] ]]) ceil_mode=True: tensor([[ [ 7., 9., 10.], [17., 19., 20.], [22., 24., 25.] ]])

Пример

Возвращаем индексы максимальных элементов с помощью параметра return_indices:

import torch import torch.nn.functional as F t = torch.tensor([ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16] ], dtype=torch.float) t = t.unsqueeze(0).unsqueeze(0) res, indices = F.max_pool2d(t, kernel_size=2, stride=2, return_indices=True) print("Максимальные значения:") print(res) print("Индексы:") print(indices)

Результат выполнения кода:

Максимальные значения: tensor([[ [ 6., 8.], [14., 16.] ]]) Индексы: tensor([[ [[5, 7]], [[13, 15]] ]])

Смотрите также

  • функцию avg_pool2d,
    которая выполняет двумерное усреднение по окну
  • функцию adaptive_max_pool2d,
    которая выполняет адаптивный макспулинг до заданного размера
  • функцию conv2d,
    которая выполняет двумерную свертку
  • функцию dropout2d,
    которая применяет двумерный дропаут для регуляризации
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить