CommencerCommencer gratuitement

Modèle PyTorch

Vous utiliserez l'approche OOP pour définir l'architecture du modèle. Rappelez-vous que cela nécessite la création d'une classe de modèle et la définition de deux méthodes à l'intérieur de celle-ci :

  • .__init__()dans laquelle vous définissez les couches que vous souhaitez utiliser ;

  • forward()Dans ce cas, vous définissez ce qu'il advient des entrées du modèle une fois qu'il les a reçues ; c'est ici que vous faites passer les entrées par des couches prédéfinies.

Construisons un modèle avec trois couches linéaires et des activations ReLU. Après la dernière couche linéaire, vous avez besoin d'une activation sigmoïde, qui convient bien aux tâches de classification binaire telles que notre problème de prédiction de la potabilité de l'eau. Voici le modèle défini à l'aide de nn.Sequential(), qui vous est peut-être plus familier :

net = nn.Sequential(

  nn.Linear(9, 16),

  nn.ReLU(),

  nn.Linear(16, 8),

  nn.ReLU(),

  nn.Linear(8, 1),

  nn.Sigmoid(),

)

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

Cet exercice fait partie du cours

Apprentissage profond intermédiaire avec PyTorch

Afficher le cours

Instructions

  • Dans la méthode .__init__(), définissez les trois couches linéaires avec des dimensions correspondant à la définition du modèle fournie et attribuez-les respectivement à self.fc1, self.fc2 et self.fc3.
  • Dans la méthode forward(), passez l'entrée du modèle x à travers toutes les couches, en n'oubliant pas d'ajouter des activations au-dessus d'elles, de la même manière que cela a déjà été fait pour la première couche.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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