Začněte nyníZačněte zdarma

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átoru
  • disc, model diskriminátoru
  • real, vzorek skutečných obrázků z trénovacích dat
  • num_images, počet obrázků v dávce
  • z_dim, velikost vstupního náhodného šumu

Toto cvičení je součástí kurzu

Deep Learning pro obrázky s PyTorchem

Zobrazit kurz

Pokyny k cvičení

  • Použij diskriminátor ke klasifikaci fake obrázků a výsledné predikce přiřaď do disc_pred_fake.
  • Vypočítej složku ztráty pro falešné obrázky zavoláním criterion na predikce diskriminátoru pro falešné obrázky a tenzor nul stejného tvaru.
  • Použij diskriminátor ke klasifikaci real obrázků a výsledné predikce přiřaď do disc_pred_real.
  • Vypočítej složku ztráty pro skutečné obrázky zavoláním criterion na 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
Upravit a spustit kód