ÎncepețiÎncepe gratuit

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

Vezi cursul

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 variabilelor self.fc1, self.fc2 și, respectiv, self.fc3.
  • În metoda forward(), pasează intrarea modelului x prin 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
Editează și rulează codul