Fonction torch.nn.AdaptiveMaxPool2d de PyTorch
Manuel de référence torch.nn de PyTorch
torch.nn.AdaptiveMaxPool2dC'est un module de max-pooling adaptatif dans PyTorch.
Il effectue un pooling de l'entrée vers une taille spécifiée, en conservant la valeur maximale plutôt que la moyenne.
Définition de fonction
torch.nn.AdaptiveMaxPool2d(output_size, return_indices=False)
Parameters
output_size: Taille de sortiereturn_indices: Indique s'il faut renvoyer les indices
Exemples d'utilisation
Exemple 1 : Utilisation de base
Exemple
import torch
import torch.nn as nn
# Max pooling global
gap = nn.AdaptiveMaxPool2d(1)
# Entrées de tailles différentes
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
# Max pooling global
gap = nn.AdaptiveMaxPool2d(1)
# Entrées de tailles différentes
x1 = torch.randn(1, 64, 32, 32)
x2 = torch.randn(1, 64, 16, 16)
print("32x32 ->", gap(x1).shape)
print("16x16 ->", gap(x2).shape)
Exemple 2 : Retour des indices
Exemple
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("Forme de sortie :", output.shape)
print("Forme des indices :", indices.shape)
print("Valeurs des indices :", 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("Forme de sortie :", output.shape)
print("Forme des indices :", indices.shape)
print("Valeurs des indices :", indices.item())
Exemple 3 : Comparaison avec AdaptiveAvgPool2d
Exemple
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("Entrée :\n", x[0, 0])
print("Pooling moyen :", avgpool(x).item())
print("Pooling max :", 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("Entrée :\n", x[0, 0])
print("Pooling moyen :", avgpool(x).item())
print("Pooling max :", maxpool(x).item())
Cas d'utilisation
- Pooling max global: Extraire les caractéristiques les plus significatives
- Agrégation de caractéristiques: Préserver les informations clés
- Réseaux de classification: Remplacer les couches FC
Astuce : Le max pooling conserve les caractéristiques les plus significatives, tandis que le pooling moyen est plus lisse.
Autres extensions