LoslegenKostenlos loslegen

Diskriminatorverlust

Jetzt ist es Zeit, den Verlust für den Diskriminator festzulegen. Denk dran, dass der Diskriminator Bilder als echt oder gefälscht einstufen soll. Deshalb hat der Generator einen Verlust, wenn er die Ausgaben des Generators als echt (Label „ 1 ”) oder die echten Bilder als gefälscht (Label „ 0 ”) einstuft.

Definiere die Funktion „ disc_loss() “, die den Diskriminatorverlust berechnet. Es braucht fünf Argumente:

  • gen, das Generatormodell
  • disc, das Diskriminator-Modell
  • realEin paar echte Bilder aus den Trainingsdaten
  • num_images, die Anzahl der Bilder im Stapel
  • z_dim, die Größe des eingegebenen Zufallsrauschens

Diese Übung ist Teil des Kurses

Deep Learning für Bilder mit PyTorch

Kurs anzeigen

Anleitung zur Übung

  • Verwende den Diskriminator, um die Bilder „ fake “ zu klassifizieren und die Vorhersagen „ disc_pred_fake “ zuzuordnen.
  • Berechne die falsche Verlustkomponente, indem du „ criterion “ für die Vorhersagen des Diskriminators für falsche Bilder und einen Tensor mit Nullen derselben Form aufrufst.
  • Verwende den Diskriminator, um die Bilder „ real “ zu klassifizieren und die Vorhersagen „ disc_pred_real “ zuzuordnen.
  • Berechne den tatsächlichen Verlustanteil, indem du „ criterion “ für die Vorhersagen des Diskriminators für echte Bilder und den Tensor „ones“ mit derselben Form aufrufst.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

def disc_loss(gen, disc, real, num_images, z_dim):
    criterion = nn.BCEWithLogitsLoss()
    noise = torch.randn(num_images, z_dim)
    fake = gen(noise)
    # Get discriminator's predictions for fake images
    disc_pred_fake = ____
    # Calculate the fake loss component
    fake_loss = ____
    # Get discriminator's predictions for real images
    disc_pred_real = ____
    # Calculate the real loss component
    real_loss = ____
    disc_loss = (real_loss + fake_loss) / 2
    return disc_loss
Code bearbeiten und ausführen