Modèle PyTorch
Vous allez utiliser l'approche orientée objet 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__(), dans laquelle vous définissez les couches que vous souhaitez utiliser ;forward(), dans laquelle 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 devez utiliser une activation sigmoïde, particulièrement 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(), que vous connaissez peut-être déjà :
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
Deep learning intermédiaire avec PyTorch
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 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 veillant à ajouter les activations au-dessus d'elles, comme c'est déjà 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