Erste SchritteKostenlos loslegen

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

Kurs anzeigen

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()
Bearbeiten und Ausführen von Code