Kom igångKom igång gratis

PyTorch-modell

Du ska använda det objektorienterade programmeringsättet för att definiera modellarkitekturen. Det innebär att du skapar en modellklass och definierar två metoder i den:

  • .__init__(), där du definierar de lager du vill använda;

  • forward(), där du definierar vad som händer med modellens indata när den tar emot dem – det är här du skickar indata genom de fördefinierade lagren.

Låt oss bygga en modell med tre linjära lager och ReLU-aktiveringar. Efter det sista linjära lagret behöver du en sigmoid-aktivering i stället, vilket passar bra för binära klassificeringsuppgifter som vårt problem med dricksvattenbedömning. Här är modellen definierad med nn.Sequential(), som du kanske är mer bekant med:

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

Låt oss skriva om den här modellen som en klass!

Den här övningen är en del av kursen

Fördjupad djupinlärning med PyTorch

Visa kurs

Övningsinstruktioner

  • I metoden .__init__() definierar du de tre linjära lagren med dimensioner som motsvarar den angivna modelldefinitionen och tilldelar dem till self.fc1, self.fc2 respektive self.fc3.
  • I metoden forward() skickar du modellens indata x genom alla lager och lägger till aktiveringar efter dem, på liknande sätt som redan görs för det första lagret.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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
Redigera och kör kod