IniziaInizia gratis

Modello PyTorch

Userai l'approccio OOP per definire l'architettura del modello. Ricorda che questo richiede di impostare una classe del modello e definire al suo interno due metodi:

  • .__init__(), in cui definisci i livelli che vuoi usare;

  • forward(), in cui definisci cosa succede agli input del modello quando li riceve; qui è dove passi gli input attraverso i livelli predefiniti.

Costruiamo un modello con tre livelli lineari e attivazioni ReLU. Dopo l'ultimo livello lineare, ti serve invece un'attivazione sigmoid, ben adatta a compiti di classificazione binaria come il nostro problema di previsione della potabilità dell'acqua. Ecco il modello definito usando nn.Sequential(), con cui potresti avere più familiarità:

net = nn.Sequential(
  nn.Linear(9, 16),
  nn.ReLU(),
  nn.Linear(16, 8),
  nn.ReLU(),
  nn.Linear(8, 1),
  nn.Sigmoid(),
)

R riscriviamo questo modello come una classe!

Questo esercizio fa parte del corso

Deep Learning intermedio con PyTorch

Visualizza il corso

Istruzioni dell'esercizio

  • Nel metodo .__init__(), definisci i tre livelli lineari con dimensioni corrispondenti alla definizione del modello fornita e assegnali rispettivamente a self.fc1, self.fc2 e self.fc3.
  • Nel metodo forward(), passa l'input del modello x attraverso tutti i livelli, ricordandoti di aggiungere le attivazioni sopra di essi, in modo simile a quanto già fatto per il primo livello.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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
Modifica ed esegui il codice