Discriminateur
Le générateur étant 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 également accès à une fonction personnalisée disc_block() qui renvoie un bloc composé d’une couche linéaire suivie d’une activation LeakyReLU. Vous l’utiliserez comme brique 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)
)
Cet exercice fait partie du cours
Deep Learning pour l’image avec PyTorch
Instructions
- 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 mapper la sortie vers 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 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
____