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