Функция PyTorch torch.nn.AdaptiveMaxPool2d

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


torch.nn.AdaptiveMaxPool2dЭто модуль адаптивного максимального пулинга в PyTorch.

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

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

torch.nn.AdaptiveMaxPool2d(output_size, return_indices=False)

Parameters

  • output_size: Размер выходных данных
  • return_indices: Возвращать ли индексы

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

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

Пример

import torch
import torch.nn as nn

# Глобальный максимальный пулинг
gap = nn.AdaptiveMaxPool2d(1)

# Входные данные разных размеров
x1 = torch.randn(1, 64, 32, 32)
x2 = torch.randn(1, 64, 16, 16)

print("32x32 ->", gap(x1).shape)
print("16x16 ->", gap(x2).shape)

Пример 2: Возврат индексов

Пример

import torch
import torch.nn as nn

gap = nn.AdaptiveMaxPool2d(1, return_indices=True)

x = torch.randn(1, 64, 8, 8)
output, indices = gap(x)

print("Форма выхода:", output.shape)
print("Форма индексов:", indices.shape)
print("Значения индексов:", indices.item())

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

Пример

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)

avgpool = nn.AdaptiveAvgPool2d(1)
maxpool = nn.AdaptiveMaxPool2d(1)

print("Ввод:\n", x[0, 0])
print("Усредняющее пулирование:", avgpool(x).item())
print("Максимальное пулирование:", maxpool(x).item())

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

  • Глобальное максимальное пулирование: Извлечение наиболее значимых признаков
  • Агрегация признаков: Сохранение ключевой информации
  • Сети классификации: замена FC-слоёв

Совет: max-pooling сохраняет наиболее значимые признаки, тогда как average pooling более сглаженный.


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

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