PyTorch torch.nn.AdaptiveMaxPool2d Funktion
PyTorch torch.nn Referenzhandbuch
torch.nn.AdaptiveMaxPool2dEs ist ein adaptives Max-Pooling-Modul in PyTorch.
Es führt ein Pooling der Eingabe auf eine angegebene Größe durch und behält dabei den Maximalwert anstelle des Durchschnittswerts bei.
Funktionsdefinition
torch.nn.AdaptiveMaxPool2d(output_size, return_indices=False)
Parameters
output_size: Ausgabegrößereturn_indices: Ob Indizes zurückgegeben werden sollen
Anwendungsbeispiele
Beispiel 1: Grundlegende Verwendung
Beispiel
import torch
import torch.nn as nn
# Globales Max-Pooling
gap = nn.AdaptiveMaxPool2d(1)
# Eingaben mit unterschiedlichen Größen
x1 = torch.randn(1, 64, 32, 32)
x2 = torch.randn(1, 64, 16, 16)
print("32x32 ->", gap(x1).shape)
print("16x16 ->", gap(x2).shape)
import torch.nn as nn
# Globales Max-Pooling
gap = nn.AdaptiveMaxPool2d(1)
# Eingaben mit unterschiedlichen Größen
x1 = torch.randn(1, 64, 32, 32)
x2 = torch.randn(1, 64, 16, 16)
print("32x32 ->", gap(x1).shape)
print("16x16 ->", gap(x2).shape)
Beispiel 2: Rückgabe von Indizes
Beispiel
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("Ausgabeform:", output.shape)
print("Index-Form:", indices.shape)
print("Index-Werte:", indices.item())
import torch.nn as nn
gap = nn.AdaptiveMaxPool2d(1, return_indices=True)
x = torch.randn(1, 64, 8, 8)
output, indices = gap(x)
print("Ausgabeform:", output.shape)
print("Index-Form:", indices.shape)
print("Index-Werte:", indices.item())
Beispiel 3: Vergleich mit AdaptiveAvgPool2d
Beispiel
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("Eingabe:\n", x[0, 0])
print("Mittelwert-Pooling:", avgpool(x).item())
print("Max-Pooling:", maxpool(x).item())
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("Eingabe:\n", x[0, 0])
print("Mittelwert-Pooling:", avgpool(x).item())
print("Max-Pooling:", maxpool(x).item())
Anwendungsfälle
- Globales Max-Pooling: Die wichtigsten Merkmale extrahieren
- Merkmalsaggregation: Wichtige Informationen bewahren
- Klassifikationsnetzwerke: FC-Schichten ersetzen
Tipp: Max-Pooling behält die wichtigsten Merkmale bei, während Average-Pooling glatter ist.
Andere Erweiterungen