LoslegenKostenlos loslegen

Generator-Loss

Bevor du dein GAN trainieren kannst, musst du Loss-Funktionen für sowohl den Generator als auch den Diskriminator definieren. Du beginnst mit ersterem.

Erinnere dich: Die Aufgabe des Generators ist es, so überzeugende Fake-Bilder zu erzeugen, dass der Diskriminator sie als real klassifiziert. Daher erhält der Generator einen Loss, wenn die von ihm erzeugten Bilder vom Diskriminator als fake (Label 0) klassifiziert werden.

Definiere die Funktion gen_loss(), die den Generator-Loss berechnet. Sie nimmt vier Argumente entgegen:

  • gen, das Generator-Modell
  • disc, das Diskriminator-Modell
  • num_images, die Anzahl der Bilder im Batch
  • z_dim, die Größe des Eingabezufallsrauschens

Diese Übung ist Teil des Kurses

Deep Learning für Bilder mit PyTorch

Kurs anzeigen

Anleitung zur Übung

  • Erzeuge Zufallsrauschen der Form num_images mal z_dim und weise es noise zu.
  • Verwende den Generator, um aus noise ein Fake-Bild zu erzeugen, und weise es fake zu.
  • Hole die Vorhersage des Diskriminators für das erzeugte Fake-Bild.
  • Berechne den Generator-Loss, indem du criterion auf die Vorhersagen des Diskriminators und einen Tensor aus Einsen mit derselben Form anwendest.

Interaktive Übung

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

def gen_loss(gen, disc, criterion, num_images, z_dim):
    # Define random noise
    noise = ____(num_images, z_dim)
    # Generate fake image
    fake = ____
    # Get discriminator's prediction on the fake image
    disc_pred = ____
    # Compute generator loss
    criterion = nn.BCEWithLogitsLoss()
    gen_loss = ____(____, ____)
    return gen_loss
Code bearbeiten und ausführen