CommencezCommencez gratuitement

Générateur convolutionnel

Définissez un générateur convolutionnel selon les lignes directrices de DCGAN présentées dans la dernière vidéo.

torch.nn a été préimporté sous le nom nn pour vous faciliter la tâche. De plus, une fonction personnalisée dc_gen_block() est disponible, qui retourne un bloc composé d'une convolution transposée, d'une normalisation par lots et d'une activation ReLU. Cette fonction sert de composant de base pour construire le générateur convolutionnel. Vous pouvez vous familiariser avec la définition de dc_gen_block() ci-dessous.

def dc_gen_block(in_dim, out_dim, kernel_size, stride):
    return nn.Sequential(
        nn.ConvTranspose2d(in_dim, out_dim, kernel_size, stride=stride),
        nn.BatchNorm2d(out_dim),
        nn.ReLU()
    )

Cette activité fait partie du cours

Deep Learning pour les images avec PyTorch

Voir le cours

Instructions de l’exercice

  • Ajoutez le dernier bloc du générateur, en faisant correspondre la taille des cartes de caractéristiques à 256.
  • Ajoutez une convolution transposée avec une taille de sortie de 3.
  • Ajoutez l'activation tanh.

Exercice interactif pratique

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

class DCGenerator(nn.Module):
    def __init__(self, in_dim, kernel_size=4, stride=2):
        super(DCGenerator, self).__init__()
        self.in_dim = in_dim
        self.gen = nn.Sequential(
            dc_gen_block(in_dim, 1024, kernel_size, stride),
            dc_gen_block(1024, 512, kernel_size, stride),
            # Add last generator block
            ____,
            # Add transposed convolution
            ____(____, ____, kernel_size, stride=stride),
            # Add tanh activation
            ____
        )

    def forward(self, x):
        x = x.view(len(x), self.in_dim, 1, 1)
        return self.gen(x)
Modifier et exécuter le code