ÎncepețiÎncepe gratuit

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

Vezi cursul

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 zgomotului 16, în această ordine, și atribuie rezultatul variabilei d_loss.
  • Calculează gradienții folosind d_loss.
  • Calculează pierderea generatorului folosind gen_loss(), transmițându-i generatorul, discriminatorul, dimensiunea lotului curent și dimensiunea zgomotului 16, în această ordine, și atribuie rezultatul variabilei g_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
Editează și rulează codul