Začněte nyníZačněte zdarma

PyTorch model

Pro definici architektury modelu použiješ objektově orientovaný přístup. Ten vyžaduje vytvoření třídy modelu a definici dvou metod uvnitř ní:

  • .__init__(), kde definuješ vrstvy, které chceš použít;

  • forward(), kde definuješ, co se stane se vstupy modelu, jakmile je obdrží – tady vstupy procházejí předem definovanými vrstvami.

Postavme model se třemi lineárními vrstvami a aktivacemi ReLU. Po poslední lineární vrstvě použiješ aktivaci sigmoid, která se hodí pro úlohy binární klasifikace – jako je náš problém předpovědi pitnosti vody. Tady je model definovaný pomocí nn.Sequential(), který možná znáš lépe:

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

Pojďme tento model přepsat jako třídu!

Toto cvičení je součástí kurzu

Intermediate Deep Learning with PyTorch

Zobrazit kurz

Pokyny k cvičení

  • V metodě .__init__() definuj tři lineární vrstvy s dimenzemi odpovídajícími výše uvedené definici modelu a přiřaď je do self.fc1, self.fc2 a self.fc3.
  • V metodě forward() předej vstup modelu x přes všechny vrstvy a nezapomeň za ně přidat aktivace – stejně jako je to již udělané pro první vrstvu.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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
Upravit a spustit kód