Implémentation du Dropout dans PyTorch : Avec exemple
Un exemple couvrant la régularisation de votre modèle PyTorch avec Dropout, avec du code et des visualisations interactives.
Created on January 11|Last edited on February 2
Comment
Une Introduction au Dropout dans PyTorch
Dans ce rapport, nous verrons un exemple d'ajout de dropout à un modèle PyTorch et nous observerons l'effet du dropout sur les performances du modèle en suivant nos modèles dans Weights & Biases.
Qu'est-ce que le dropout ?
Le dropout est une technique d'apprentissage automatique qui consiste à supprimer (ou "abandonner") des unités dans un réseau neuronal pour simuler la formation d'un grand nombre d'architectures simultanément. Il est important de noter que le dropout peut réduire considérablement le risque de surajustement pendant la formation.

Exemple d'ajout de dropout à un modèle PyTorch
1. Ajouter le dropout à un modèle PyTorch
L'ajout du dropout à vos modèles PyTorch est très simple avec la classe torch.nn.Dropout, qui prend le taux de dropout - la probabilité qu'un neurone soit désactivé - comme paramètre.
self.dropout = nn.Dropout(0.25)
Nous pouvons appliquer le dropout après n'importe quelle niveau de non sortie.
2. Observer l'effet du dropout sur les performances du modèle
Pour observer l'effet du dropout, entraînez un modèle de classification d'images. Nous formerons d'abord un réseau non régularisé, puis un réseau régularisé par Dropout. Les modèles sont entraînés sur le jeu de données Cifar-10 pendant 15 époques chacun.
Exemple complet d'ajout de Dropout à un modèle PyTorch :
class Net(nn.Module):def __init__(self, input_shape=(3,32,32)):super(Net, self).__init__()self.conv1 = nn.Conv2d(3, 32, 3)self.conv2 = nn.Conv2d(32, 64, 3)self.conv3 = nn.Conv2d(64, 128, 3)self.pool = nn.MaxPool2d(2,2)n_size = self._get_conv_output(input_shape)self.fc1 = nn.Linear(n_size, 512)self.fc2 = nn.Linear(512, 10)# Define proportion or neurons to dropoutself.dropout = nn.Dropout(0.25)def forward(self, x):x = self._forward_features(x)x = x.view(x.size(0), -1)x = self.dropout(x)x = F.relu(self.fc1(x))# Apply dropoutx = self.dropout(x)x = self.fc2(x)return x
En utilisant wandb.log() dans votre fonction d'entraînement, vous pouvez suivre automatiquement les performances de votre modèle. Voir la documentation pour plus de détails.
def train(model, device, train_loader, optimizer, criterion, epoch, steps_per_epoch=20):# Log gradients and model parameterswandb.watch(model)# loop over the data iterator, and feed the inputs to the network and adjust the weights.for batch_idx, (data, target) in enumerate(train_loader, start=0):# ...acc = round((train_correct / train_total) * 100, 2)# Log metrics to visualize performancewandb.log({'Train Loss': train_loss/train_total, 'Train Accuracy': acc})
Run set
2
Impact of Using Dropout in PyTorch Impact de l'utilisation du Dropout dans PyTorch
- Un réseau non régularisé s'adapte rapidement à l'ensemble de données d'entraînement. Remarquez comment la perte de validation pour l'exécution without-dropout diverge beaucoup après seulement quelques époques. Cela explique l'erreur de généralisation plus élevée.
- L'entraînement avec deux niveaux d'exclusion avec une probabilité d'exclusion de 25 % empêche le modèle de s'adapter excessivement. Cependant, cela réduit la précision de l'apprentissage, ce qui signifie qu'un réseau régularisé doit être entraîné plus longtemps.
- Le dropout améliore la généralisation du modèle. Même si la précision de l'apprentissage est inférieure à celle du réseau non régularisé, la précision globale de la validation s'est améliorée. Cela explique la baisse de l'erreur de généralisation.
Et ceci conclut ce court tutoriel sur l'utilisation du dropout dans vos modèles PyTorch.
Weights & Biases
Weights & Biases vous aide à garder une trace de vos expériences d'apprentissage automatique. Utilisez notre outil pour enregistrer les hyperparamètres et les métriques de sortie de vos exécutions, puis visualisez et comparez les résultats et partagez rapidement vos conclusions avec vos collègues.
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.