Ztráta diskriminátoru
Teď je čas definovat ztrátu pro diskriminátor. Připomeň si, že úkolem diskriminátoru je klasifikovat obrázky jako skutečné nebo falešné. Diskriminátor tedy utrpí ztrátu, pokud označí výstupy generátoru jako skutečné (label 1) nebo skutečné obrázky jako falešné (label 0).
Definuj funkci disc_loss(), která vypočítá ztrátu diskriminátoru. Přijímá pět argumentů:
gen, model generátorudisc, model diskriminátorureal, vzorek skutečných obrázků z trénovacích datnum_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í
- Použij diskriminátor ke klasifikaci
fakeobrázků a výsledné predikce přiřaď dodisc_pred_fake. - Vypočítej složku ztráty pro falešné obrázky zavoláním
criterionna predikce diskriminátoru pro falešné obrázky a tenzor nul stejného tvaru. - Použij diskriminátor ke klasifikaci
realobrázků a výsledné predikce přiřaď dodisc_pred_real. - Vypočítej složku ztráty pro skutečné obrázky zavoláním
criterionna predikce diskriminátoru pro skutečné obrázky a tenzor 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 disc_loss(gen, disc, real, num_images, z_dim):
criterion = nn.BCEWithLogitsLoss()
noise = torch.randn(num_images, z_dim)
fake = gen(noise)
# Get discriminator's predictions for fake images
disc_pred_fake = ____
# Calculate the fake loss component
fake_loss = ____
# Get discriminator's predictions for real images
disc_pred_real = ____
# Calculate the real loss component
real_loss = ____
disc_loss = (real_loss + fake_loss) / 2
return disc_loss