Fonction torch.nn.Dropout2d de PyTorch

PyTorch torch.nn 参考手册Manuel de référence torch.nn de PyTorch


torch.nn.Dropout2dest un module Dropout bidimensionnel dans PyTorch.

Il met aléatoirement à zéro des canaux entiers, adapté aux cartes de caractéristiques des couches convolutionnelles.

Définition de fonction

torch.nn.Dropout2d(p=0.5, inplace=False)

Fonctionnalités

  • Mettre aléatoirement à zéro le long de la dimension des canaux
  • Tous les canaux de chaque échantillon maintiennent un motif de dropout cohérent

Exemples d'utilisation

Exemple 1 : Utilisation de base

Exemple

import torch
import torch.nn as nn

dropout2d = nn.Dropout2d(p=0.5)
dropout2d.train()

# Entrée : batch=4, channels=8, height=16, width=16
x = torch.ones(4, 8, 16, 16)

output = dropout2d(x)

# Compter le nombre de canaux désactivés
non_zero_channels = (output.sum(dim=(2, 3)) != 0).float()
print("Ratio de canaux non nuls :", non_zero_channels.mean().item())
print("Environ 0.5 des canaux devraient être conservés")

Exemple 2 : Comparaison de Dropout

Exemple

import torch
import torch.nn as nn

dropout1d = nn.Dropout(0.5)
dropout2d = nn.Dropout2d(0.5)

# Entrée
x = torch.randn(2, 4, 8, 8)

# Dropout : met aléatoirement à zéro des éléments individuels
out1 = dropout1d(x)
# Dropout2d : met à zéro par canal
out2 = dropout2d(x)

print("Forme de Dropout :", out1.shape)
print("Forme de Dropout2d :", out2.shape)

Exemple 3 : Utilisation dans un CNN

Exemple

import torch
import torch.nn as nn

# CNN avec Dropout2d
model = nn.Sequential(
    nn.Conv2d(3, 64, 3, padding=1),
    nn.BatchNorm2d(64),
    nn.ReLU(),
    nn.Dropout2d(0.3),  # Dropout au niveau de la carte de caractéristiques
    nn.Conv2d(64, 128, 3, padding=1),
    nn.BatchNorm2d(128),
    nn.ReLU(),
    nn.AdaptiveAvgPool2d(1),
    nn.Flatten(),
    nn.Linear(128, 10)
)

x = torch.randn(4, 3, 32, 32)
output = model(x)

print("Entrée :", x.shape, "-> Sortie :", output.shape)

Cas d'utilisation

  • Réseaux convolutionnels: Régularisation au niveau de la carte de caractéristiques
  • Réduire la dépendance entre canaux

Remarque : Dropout2d désactive des canaux pendant l'entraînement et n'a aucun effet lors de l'évaluation.


PyTorch torch.nn 参考手册Manuel de référence torch.nn de PyTorch

Autres extensions