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

Класс AvgPool2d

Класс AvgPool2d предназначен для уменьшения пространственных размерностей многоканальных данных, таких как изображения или карты признаков. Первый параметр kernel_size определяет размер окна пулинга. Второй параметр stride задает шаг перемещения окна, по умолчанию равен kernel_size. Третий параметр padding позволяет добавить нулевые отступы вокруг входных данных. Четвертый параметр ceil_mode управляет округлением при вычислении размеров выходного тензора, а count_include_pad определяет, учитывать ли нулевые отступы при вычислении среднего. Также имеется параметр divisor_override для переопределения делителя при вычислении среднего.

Синтаксис

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

Пример

Создадим простой двумерный тензор и применим к нему усредняющий пулинг с окном размера 2x2:

import torch import torch.nn as nn 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] ]) t = t.unsqueeze(0).unsqueeze(0) pool = nn.AvgPool2d(kernel_size=2) res = pool(t) print(res)

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

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

Пример

Пример использования параметра stride, который задает шаг перемещения окна пулинга. В этом примере шаг равен 1:

import torch import torch.nn as nn 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] ]) t = t.unsqueeze(0).unsqueeze(0) pool = nn.AvgPool2d(kernel_size=2, stride=1) res = pool(t) print(res)

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

tensor([[[[3.5000, 4.5000, 5.5000], [7.5000, 8.5000, 9.5000]]]])

Пример

Пример использования параметра padding. Добавим отступы в 1 пиксель по краям, что позволит сохранить размерность выходного тензора при шаге 1:

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

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

tensor([[[[2.2222, 2.7778, 2.2222], [4.4444, 5.0000, 4.4444], [2.2222, 2.7778, 2.2222]]]])

Пример

Применим AvgPool2d к многоканальным данным, например, к тензору с 3 каналами:

import torch import torch.nn as nn t = torch.randn(1, 3, 4, 4) pool = nn.AvgPool2d(kernel_size=2, stride=2) res = pool(t) print(res.shape)

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

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

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

  • класс MaxPool2d,
    который выполняет двумерный максимальный пулинг
  • класс AvgPool1d,
    который выполняет одномерный усредняющий пулинг
  • класс AvgPool3d,
    который выполняет трехмерный усредняющий пулинг
  • класс AdaptiveAvgPool2d,
    который выполняет адаптивный усредняющий пулинг до заданного размера
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить