Générateur
Un générateur de GAN prend en entrée un vecteur de bruit aléatoire et produit une image générée. Pour rendre son architecture plus réutilisable, vous passerez les formes d'entrée et de sortie en paramètres du modèle. Ainsi, vous pourrez utiliser le même modèle avec différentes tailles de bruit d'entrée et des images de formes variées.
Vous trouverez torch.nn déjà importé pour vous sous le nom nn. Vous avez également accès à une fonction personnalisée gen_block() qui renvoie un bloc composé d'une couche linéaire, d'une normalisation par lot et d'une activation ReLU. Vous l'utiliserez comme brique de base pour le générateur.
def gen_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.BatchNorm1d(out_dim),
nn.ReLU(inplace=True)
)
Cet exercice fait partie du cours
Deep Learning pour l’image avec PyTorch
Instructions
- Définissez
self.generatorcomme un modèle séquentiel. - Après le dernier
gen_block, ajoutez une couche linéaire avec la taille d'entrée appropriée et une taille de sortieout_dim. - Ajoutez une activation sigmoid après la couche linéaire.
- Dans la méthode
forward(), faites passer l'entrée du modèle à traversself.generator.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
class Generator(nn.Module):
def __init__(self, in_dim, out_dim):
super(Generator, self).__init__()
# Define generator block
self.generator = ____(
gen_block(in_dim, 256),
gen_block(256, 512),
gen_block(512, 1024),
# Add linear layer
____
# Add activation
____
)
def forward(self, x):
# Pass input through generator
return ____