Функция torch.nn.AvgPool2d в PyTorch

PyTorch torch.nn 参考手册Справочное руководство PyTorch torch.nn


torch.nn.AvgPool2dЭто модуль 2D-усредняющего пулинга в PyTorch.

Он вычисляет среднее для каждого окна входных данных и обычно используется для даунсэмплинга и агрегации признаков.

Определение функции

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

Описание параметра

  • kernel_size: размер окна пулинга
  • stride: шаг, по умолчанию равен kernel_size
  • padding: размер паддинга
  • ceil_mode: использовать ли ceil для вычисления выходного размера

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

Пример 1: Базовое использование

Пример

import torch
import torch.nn as nn

pool = nn.AvgPool2d(kernel_size=2, stride=2)

x = torch.randn(1, 1, 4, 4)
output = pool(x)

print("Ввод:n", x.squeeze().tolist())
print("nВывод:n", output.squeeze().tolist())
print("Форма:", x.shape, "->", output.shape)

Пример 2: Глобальное усредняющее объединение

Пример

import torch
import torch.nn as nn

# Глобальное усредняющее объединение
gap = nn.AdaptiveAvgPool2d(1)

x = torch.randn(4, 64, 16, 16)
out = gap(x)

print("Вход:", x.shape)
print("Вывод:", out.shape)
print("Количество средних значений на канал:", out.numel() // 64)

Пример 3: Сравнение с MaxPool

Пример

import torch
import torch.nn as nn

x = torch.tensor([[[
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16]
]]], dtype=torch.float32)

maxpool = nn.MaxPool2d(2, 2)
avgpool = nn.AvgPool2d(2, 2)

print("Ввод:n", x[0, 0])
print("nMaxPool:n", maxpool(x)[0, 0])
print("nAvgPool:n", avgpool(x)[0, 0])

Сценарии использования

  • Агрегация признаков: Уменьшение пространственных размерностей
  • Глобальное усредняющее объединение: Замена полносвязных слоёв
  • Сглаживание признаковУменьшение шума

PyTorch torch.nn 参考手册Справочное руководство PyTorch torch.nn

Другие расширения