Trainingsschleife
Endlich zahlt sich die ganze harte Arbeit aus, die du in die Definition der Modellarchitekturen und Verlustfunktionen gesteckt hast: Es ist Zeit für das Training! Deine Aufgabe ist es, den GAN-Trainingszyklus umzusetzen und durchzuführen. Hinweis: Nach dem ersten Datenbatch kommt eine „ break “-Anweisung, damit das Ganze nicht ewig läuft.
Die beiden Optimierer „ disc_opt “ und „ gen_opt “ wurden als Optimierer „ Adam() “ eingerichtet. Die Funktionen zum Berechnen der zuvor definierten Verluste, „ gen_loss() “ und „ disc_loss() “, stehen dir zur Verfügung. Ein „ dataloader ” (Handbuch für den ersten Einsatz) steht dir ebenfalls zur Verfügung.
Denk dran:
disc_loss()Die Argumente lauten:gen,disc,real,cur_batch_size,z_dim.gen_loss()Die Argumente lauten:gen,disc,cur_batch_size,z_dim.
Diese Übung ist Teil des Kurses
Deep Learning für Bilder mit PyTorch
Anleitung zur Übung
- Berechne den Diskriminatorverlust mit „
disc_loss()“, indem du den Generator, den Diskriminator, die Stichprobe der echten Bilder, die aktuelle Batchgröße und die Rauschgröße von „16“ in dieser Reihenfolge übergibst, und speichere das Ergebnis in „d_loss“. - Berechne Gradienten mit „
d_loss“. - Berechne den Generatorverlust mit „
gen_loss()“, indem du den Generator, den Diskriminator, die aktuelle Batchgröße und die Rauschgröße von „16“ in dieser Reihenfolge übergibst, und speichere das Ergebnis in „g_loss“. - Berechne Gradienten mit „
g_loss“.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
for epoch in range(1):
for real in dataloader:
cur_batch_size = len(real)
disc_opt.zero_grad()
# Calculate discriminator loss
d_loss = ____
# Compute gradients
____
disc_opt.step()
gen_opt.zero_grad()
# Calculate generator loss
g_loss = ____
# Compute generator gradients
____
gen_opt.step()
print(f"Generator loss: {g_loss}")
print(f"Discriminator loss: {d_loss}")
break