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
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.fc2etself.fc3. - Dans la méthode
forward(), faites passer l'entrée du modèlexà 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