Bucla de antrenament
În sfârșit, tot efortul depus în definirea arhitecturilor modelului și a funcțiilor de pierdere dă roade: a venit momentul antrenamentului! Sarcina ta este să implementezi și să execuți bucla de antrenament a GAN-ului. Notă: o instrucțiune break este plasată după primul lot de date pentru a evita un timp de rulare îndelungat.
Cei doi optimizatori, disc_opt și gen_opt, au fost inițializați ca optimizatori Adam(). Funcțiile pentru calculul pierderilor pe care le-ai definit anterior, gen_loss() și disc_loss(), îți sunt disponibile. Un dataloader este, de asemenea, pregătit pentru tine.
Amintește-ți că:
- Argumentele lui
disc_loss()sunt:gen,disc,real,cur_batch_size,z_dim. - Argumentele lui
gen_loss()sunt:gen,disc,cur_batch_size,z_dim.
Acest exercițiu face parte din cursul
Deep Learning pentru imagini cu PyTorch
Instrucțiuni pentru exercițiu
- Calculează pierderea discriminatorului folosind
disc_loss(), transmițându-i generatorul, discriminatorul, eșantionul de imagini reale, dimensiunea lotului curent și dimensiunea zgomotului16, în această ordine, și atribuie rezultatul variabileid_loss. - Calculează gradienții folosind
d_loss. - Calculează pierderea generatorului folosind
gen_loss(), transmițându-i generatorul, discriminatorul, dimensiunea lotului curent și dimensiunea zgomotului16, în această ordine, și atribuie rezultatul variabileig_loss. - Calculează gradienții folosind
g_loss.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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