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

Функция avg_pool2d

Функция avg_pool2d из модуля torch.nn.functional применяется к входному тензору для уменьшения пространственных размерностей путём усреднения значений в скользящем окне. Первым параметром функция принимает входной тензор размерностью (N, C, H, W) или (C, H, W). Вторым параметром указывается размер окна пулинга kernel_size. Третьим параметром можно задать шаг stride, четвёртым - отступы padding. Также доступны параметры ceil_mode для округления размера в большую сторону и count_include_pad, определяющий учёт заполнения при вычислении среднего.

Синтаксис

torch.nn.functional.avg_pool2d( input, kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True, divisor_override=None )

Пример с базовым использованием

Применим усредняющий пулинг с окном 2x2 к тензору размером 4x4:

import torch import torch.nn.functional as F t = torch.tensor([ [1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0], [13.0, 14.0, 15.0, 16.0] ]).unsqueeze(0).unsqueeze(0) res = F.avg_pool2d(t, kernel_size=2) print(res)

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

tensor([[[[3.5000, 5.5000], [11.5000, 13.5000]]]])

Пример с шагом и отступами

Установим шаг 1 и отступ 1, чтобы сохранить размерность выхода:

import torch import torch.nn.functional as F t = torch.tensor([ [1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0] ]).unsqueeze(0).unsqueeze(0) res = F.avg_pool2d(t, kernel_size=3, stride=1, padding=1) print(res)

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

tensor([[[[2.0000, 2.6667, 2.3333], [3.3333, 5.0000, 4.6667], [2.6667, 4.3333, 4.0000]]]])

Пример с параметром ceil_mode

Используем ceil_mode=True, чтобы включить окна, выходящие за границы тензора:

import torch import torch.nn.functional as F t = torch.tensor([ [1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0] ]).unsqueeze(0).unsqueeze(0) res = F.avg_pool2d(t, kernel_size=2, stride=2, ceil_mode=True) print(res)

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

tensor([[[[3.0000, 4.5000], [7.5000, 9.0000]]]])

Пример с пакетом данных

Применим пулинг к пакету из двух изображений с 3 каналами:

import torch import torch.nn.functional as F t = torch.randn(2, 3, 8, 8) res = F.avg_pool2d(t, kernel_size=4, stride=2) print(res.shape)

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

torch.Size([2, 3, 3, 3])

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

  • функцию max_pool2d,
    которая выполняет пулинг с выбором максимального значения
  • функцию adaptive_avg_pool2d,
    которая позволяет задать целевой размер выхода
  • функцию adaptive_max_pool2d,
    которая выполняет адаптивный максимальный пулинг
  • функцию lp_pool2d,
    которая выполняет пулинг на основе Lp-нормы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить