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-Modelldisc, das Diskriminator-Modellnum_images, die Anzahl der Bilder im Batchz_dim, die Größe des Eingabezufallsrauschens
Diese Übung ist Teil des Kurses
Deep Learning für Bilder mit PyTorch
Anleitung zur Übung
- Erzeuge Zufallsrauschen der Form
num_imagesmalz_dimund weise esnoisezu. - Verwende den Generator, um aus
noiseein Fake-Bild zu erzeugen, und weise esfakezu. - Hole die Vorhersage des Diskriminators für das erzeugte Fake-Bild.
- Berechne den Generator-Loss, indem du
criterionauf 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