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
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 doself.fc1,self.fc2aself.fc3. - V metodě
forward()předej vstup modeluxpř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