CommencezCommencez gratuitement

Perte du générateur

Avant d'entraîner votre GAN, vous devez définir des fonctions de perte pour le générateur et pour le discriminateur. Vous allez commencer par le premier.

Rappelez-vous que le rôle du générateur est de produire de fausses images capables de tromper le discriminateur pour qu'il les classe comme réelles. Par conséquent, le générateur subit une perte si les images qu'il a générées sont classées comme fausses (étiquette 0) par le discriminateur.

Définissez la fonction gen_loss() qui calcule la perte du générateur. Elle prend quatre arguments :

  • gen, le modèle de générateur
  • disc, le modèle de discriminateur
  • num_images, le nombre d'images dans le lot
  • z_dim, la taille du bruit aléatoire en entrée

Cette activité fait partie du cours

Deep Learning pour les images avec PyTorch

Voir le cours

Instructions de l’exercice

  • Générez du bruit aléatoire de forme num_images par z_dim et affectez-le à noise.
  • Utilisez le générateur pour produire une fausse image à partir de noise et affectez-la à fake.
  • Obtenez la prédiction du discriminateur pour l'image factice générée.
  • Calculez la perte du générateur en appelant criterion sur les prédictions du discriminateur et sur un tenseur de uns de la même forme.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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
Modifier et exécuter le code