CommencerCommencer gratuitement

Générateur

Un générateur GAN prend un vecteur de bruit aléatoire en entrée et produit une image générée. Afin de rendre son architecture plus réutilisable, vous transmettrez les formes d'entrée et de sortie en tant que paramètres au modèle. De cette manière, 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 pouvez également accéder à une fonction d'gen_block() personnalisée qui renvoie un bloc comprenant : une couche linéaire, une normalisation par lots et une activation ReLU. Vous l'utiliserez comme élément 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 les images avec PyTorch

Afficher le cours

Instructions

  • Définissez l'self.generator e comme un modèle séquentiel.
  • Après la dernière commande « gen_block », veuillez ajouter une couche linéaire avec la taille d'entrée appropriée et la taille de sortie « out_dim ».
  • Ajoutez une activation sigmoïde après la couche linéaire.
  • Dans la méthode forward(), transmettez l'entrée du modèle via self.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 ____
Modifier et exécuter le code