CommencerCommencer gratuitement

Discriminateur

Une fois le générateur défini, l'étape suivante dans la construction d'un GAN consiste à construire le discriminateur. Il utilise la sortie du générateur comme entrée 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é pour vous sous le nom nn. Vous pouvez également accéder à une fonction d'disc_block() personnalisée qui renvoie un bloc d'une couche linéaire suivi d'une activation LeakyReLU. Vous l'utiliserez comme élément constitutif du discriminateur.

def disc_block(in_dim, out_dim):

    return nn.Sequential(

        nn.Linear(in_dim, out_dim),

        nn.LeakyReLU(0.2)

    )

Cet exercice fait partie du cours

Deep learning pour les images avec PyTorch

Afficher le cours

Instructions

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

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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