CommencezCommencez gratuitement

Modèle PyTorch

Vous allez utiliser l'approche POO pour définir l'architecture du modèle. Rappelez-vous que cela implique de créer une classe de modèle et d'y définir deux méthodes :

  • .__init__(), où vous définissez les couches que vous voulez utiliser ;

  • forward(), où vous définissez ce qui arrive aux entrées du modèle lorsqu'il les reçoit ; c'est là que vous faites passer les entrées à travers les couches prédéfinies.

Créons un modèle avec trois couches linéaires et des activations ReLU. Après la dernière couche linéaire, vous aurez plutôt besoin d'une activation sigmoïde, bien adaptée aux tâches de classification binaire comme notre problème de prédiction de la potabilité de l'eau. Voici le modèle défini avec nn.Sequential(), avec lequel vous êtes peut-être plus à l'aise :

net = nn.Sequential(
  nn.Linear(9, 16),
  nn.ReLU(),
  nn.Linear(16, 8),
  nn.ReLU(),
  nn.Linear(8, 1),
  nn.Sigmoid(),
)

Réécrivons maintenant ce modèle sous forme de classe !

Cette activité fait partie du cours

Apprentissage profond intermédiaire avec PyTorch

Voir le cours

Instructions de l’exercice

  • Dans la méthode .__init__(), définissez les trois couches linéaires avec des dimensions correspondant à la définition du modèle fournie et assignez-les respectivement à self.fc1, self.fc2 et self.fc3.
  • Dans la méthode forward(), faites passer l'entrée du modèle x à travers toutes les couches, en n'oubliant pas d'ajouter les fonctions d'activation par-dessus, comme c'est déjà fait pour la première couche.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):
    def __init__(self):
        super().__init__()
        # Define the three linear layers
        self.fc1 = ____
        self.fc2 = ____
        self.fc3 = ____
        
    def forward(self, x):
        # Pass x through linear layers adding activations
        x = nn.functional.relu(self.fc1(x))
        x = ____
        x = ____
        return x
Modifier et exécuter le code