Model PyTorch
Vei folosi abordarea OOP pentru a defini arhitectura modelului. Rține că acest lucru presupune crearea unei clase pentru model și definirea a două metode în interiorul ei:
.__init__(), în care definești straturile pe care vrei să le folosești;forward(), în care definești ce se întâmplă cu datele de intrare ale modelului odată ce le primește; aici pasezi intrările prin straturile predefinite.
Hai să construim un model cu trei straturi liniare și activări ReLU. După ultimul strat liniar, ai nevoie de o activare sigmoid, potrivită pentru sarcini de clasificare binară, precum problema noastră de predicție a potabilității apei. Iată modelul definit cu nn.Sequential(), cu care poate ești mai familiarizat:
net = nn.Sequential(
nn.Linear(9, 16),
nn.ReLU(),
nn.Linear(16, 8),
nn.ReLU(),
nn.Linear(8, 1),
nn.Sigmoid(),
)
Hai să rescriem acest model ca o clasă!
Acest exercițiu face parte din cursul
Deep Learning intermediar cu PyTorch
Instrucțiuni pentru exercițiu
- În metoda
.__init__(), definește cele trei straturi liniare cu dimensiunile corespunzătoare definiției modelului furnizate și atribuie-le variabilelorself.fc1,self.fc2și, respectiv,self.fc3. - În metoda
forward(), pasează intrarea modeluluixprin toate straturile, adăugând funcțiile de activare după fiecare, similar cu modul în care este deja realizat pentru primul strat.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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