Training von Multi-Output-Modellen
Beim Training von Modellen mit mehreren Outputs ist es entscheidend, dass die Verlustfunktion korrekt definiert ist.
In diesem Fall erzeugt das Modell zwei Outputs: Vorhersagen für das Alphabet und das Zeichen. Für jeden dieser Outputs gibt es entsprechende Ground-Truth-Labels, mit denen du zwei separate Verluste berechnen kannst: einen für falsche Alphabetklassifizierungen und einen für falsche Zeichenklassifizierungen. Da es sich in beiden Fällen um eine Multi-Label-Klassifizierungsaufgabe handelt, kann jeweils die Cross-Entropy-Verlustfunktion angewendet werden.
Der Gradientenabstieg kann jedoch nur eine Verlustfunktion optimieren. Du wirst daher den Gesamtverlust als Summe der Alphabet- und Zeichenverluste definieren.
Diese Übung ist Teil des Kurses
Deep Learning mit PyTorch für Fortgeschrittene
Anleitung zur Übung
- Berechne den Alphabetklassifizierungsverlust und weise ihn
loss_alpha
zu. - Berechne den Zeichenklassifizierungsverlust und weise ihn
loss_char
zu. - Berechne den Gesamtverlust als Summe der beiden Teilverluste und weise ihn
loss
zu.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
net = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.05)
for epoch in range(1):
for images, labels_alpha, labels_char in dataloader_train:
optimizer.zero_grad()
outputs_alpha, outputs_char = net(images)
# Compute alphabet classification loss
loss_alpha = ____
# Compute character classification loss
loss_char = ____
# Compute total loss
loss = ____
loss.backward()
optimizer.step()