Generatorverlust
Bevor du dein GAN trainieren kannst, musst du Verlustfunktionen für den Generator und den Diskriminator festlegen. Du fängst mit dem ersten an.
Erinnere dich daran, dass der Generator solche falschen Bilder machen soll, dass der Unterscheider sie für echt hält. Deshalb hat der Generator einen Verlust, wenn die Bilder, die er erzeugt hat, vom Diskriminator als gefälscht eingestuft werden (Label 0
).
Definiere die Funktion „ gen_loss()
“, die den Generatorverlust berechnet. Es braucht vier Argumente:
gen
, das Generatormodelldisc
, das Diskriminator-Modellnum_images
, die Anzahl der Bilder im Stapelz_dim
, die Größe des eingegebenen Zufallsrauschens
Diese Übung ist Teil des Kurses
Deep Learning für Bilder mit PyTorch
Anleitung zur Übung
- Erzeuge zufälliges Rauschen mit der Form „
num_images
“ über „z_dim
“ und weise es „noise
“ zu. - Mach mit dem Generator ein gefälschtes Bild von
noise
und schick es anfake
. - Hol dir die Vorhersage des Diskriminators für das gefälschte Bild.
- Berechne den Verlust der Generatoren, indem du „
criterion
“ auf die Vorhersagen des Diskriminators und einen Tensor mit Einsen 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