PyTorch-Modell
Du wirst den OOP-Ansatz verwenden, um die Modellarchitektur zu definieren. Denk daran, dass dies das Einrichten einer Modellklasse und das Definieren von zwei Methoden darin erfordert:
.__init__()
, in der du die Schichten definierst, die du verwenden möchtest;forward()
, in der du definierst, was mit den Modell-Inputs geschieht, sobald sie empfangen werden; hier leitest du Inputs durch vordefinierte Schichten.
Erstellen wir ein Modell mit drei linearen Schichten und ReLU-Aktivierungen. Nach der letzten linearen Schicht brauchst du stattdessen eine Sigmoid-Aktivierung, die sich gut für binäre Klassifizierungsaufgaben wie unser Wasservorhersageproblem eignet. Hier ist das Modell definiert mit nn.Sequential()
, womit du vielleicht vertrauter bist:
net = nn.Sequential(
nn.Linear(9, 16),
nn.ReLU(),
nn.Linear(16, 8),
nn.ReLU(),
nn.Linear(8, 1),
nn.Sigmoid(),
)
Lass uns dieses Modell als Klasse neu schreiben!
Diese Übung ist Teil des Kurses
Deep Learning mit PyTorch für Fortgeschrittene
Anleitung zur Übung
- In der
.__init__()
-Methode definierst du die drei linearen Schichten mit Dimensionen entsprechend der bereitgestellten Modelldefinition und weist sie jeweilsself.fc1
,self.fc2
undself.fc3
zu. - In der
forward()
-Methode leitest du den Modell-Inputx
durch alle Schichten und denkst daran, die Aktivierungen darüber zu legen, ähnlich wie es bereits für die erste Schicht gemacht wird.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
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