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
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
____