Trénovací smyčka
A je to tady – veškerá tvoje práce na definování architektur modelu a ztrátových funkcí teď přijde ke slovu: čas trénovat! Tvým úkolem je implementovat a spustit trénovací smyčku GAN. Poznámka: po první dávce dat je vložen příkaz break, aby nedocházelo k příliš dlouhému běhu.
Oba optimizéry, disc_opt a gen_opt, jsou inicializovány jako optimizéry Adam(). K dispozici máš také funkce pro výpočet ztrát, které jsi definoval/a dříve: gen_loss() a disc_loss(). Připraven je i dataloader.
Připomeň si:
- Argumenty
disc_loss()jsou:gen,disc,real,cur_batch_size,z_dim. - Argumenty
gen_loss()jsou:gen,disc,cur_batch_size,z_dim.
Toto cvičení je součástí kurzu
Deep Learning pro obrázky s PyTorchem
Pokyny k cvičení
- Vypočítej ztrátu diskriminátoru pomocí
disc_loss()– předej jí generátor, diskriminátor, vzorek reálných obrázků, aktuální velikost dávky a velikost šumu16(v tomto pořadí) a výsledek ulož dod_loss. - Vypočítej gradienty pomocí
d_loss. - Vypočítej ztrátu generátoru pomocí
gen_loss()– předej jí generátor, diskriminátor, aktuální velikost dávky a velikost šumu16(v tomto pořadí) a výsledek ulož dog_loss. - Vypočítej gradienty pomocí
g_loss.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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