Ztrátová funkce generátoru
Než začneš trénovat GAN, musíš definovat ztrátové funkce pro generátor i diskriminátor. Začneme generátorem.
Generátor má za úkol vytvářet takové falešné obrázky, které přesvědčí diskriminátor, aby je označil jako skutečné. Generátor tedy utrpí ztrátu, pokud diskriminátor jím vytvořené obrázky označí jako falešné (label 0).
Definuj funkci gen_loss(), která vypočítá ztrátu generátoru. Přijímá čtyři argumenty:
gen, model generátorudisc, model diskriminátorunum_images, počet obrázků v dávcez_dim, velikost vstupního náhodného šumu
Toto cvičení je součástí kurzu
Deep Learning pro obrázky s PyTorchem
Pokyny k cvičení
- Vygeneruj náhodný šum o tvaru
num_images×z_dima ulož ho do proměnnénoise. - Pomocí generátoru vytvoř z proměnné
noisefalešný obrázek a ulož ho do proměnnéfake. - Získej predikci diskriminátoru pro vygenerovaný falešný obrázek.
- Vypočítej ztrátu generátoru voláním funkce
criterionna predikcích diskriminátoru a tenzoru jedniček stejného tvaru.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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