CommencezCommencez gratuitement

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 comme paramètres du modèle. De cette façon, vous pouvez 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 aussi accès à une fonction personnalisée gen_block() qui retourne un bloc composé d'une couche linéaire, d'une normalisation par lots et d'une activation ReLU. Vous l'utiliserez comme bloc de base du 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)
    )

Cette activité fait partie du cours

Deep Learning pour les images avec PyTorch

Voir le cours

Instructions de l’exercice

  • Définissez self.generator comme 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 sortie de out_dim.
  • Ajoutez une activation sigmoid après la couche linéaire.
  • Dans la méthode forward(), faites passer l'entrée du modèle à travers self.generator.

Exercice interactif pratique

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

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 ____
Modifier et exécuter le code