CommencezCommencez gratuitement

Discriminateur

Avec le générateur défini, l'étape suivante pour construire un GAN consiste à créer le discriminateur. Il prend en entrée la sortie du générateur et produit une prédiction binaire : l'entrée est-elle générée ou réelle?

Vous trouverez torch.nn déjà importé sous le nom nn. Vous avez aussi accès à une fonction personnalisée disc_block() qui retourne un bloc composé d'une couche linéaire suivie d'une activation LeakyReLU. Vous l'utiliserez comme bloc de base pour le discriminateur.

def disc_block(in_dim, out_dim):
    return nn.Sequential(
        nn.Linear(in_dim, out_dim),
        nn.LeakyReLU(0.2)
    )

Cette activité fait partie du cours

Deep Learning pour les images avec PyTorch

Voir le cours

Instructions de l’exercice

  • Ajoutez le dernier bloc du discriminateur au modèle, avec la taille d'entrée appropriée et une sortie de 256.
  • Après le dernier bloc du discriminateur, ajoutez une couche linéaire pour ramener la sortie à une taille de 1.
  • Définissez la méthode forward() pour faire passer l'image d'entrée à travers le bloc séquentiel défini dans __init__().

Exercice interactif pratique

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

class Discriminator(nn.Module):
    def __init__(self, im_dim):
        super(Discriminator, self).__init__()
        self.disc = nn.Sequential(
            disc_block(im_dim, 1024),
            disc_block(1024, 512),
            # Define last discriminator block
            ____,
            # Add a linear layer
            ____,
        )

    def forward(self, x):
        # Define the forward method
        ____
Modifier et exécuter le code