CommencerCommencer gratuitement

Générateur convolutionnel

Définissez un générateur convolutionnel conforme aux recommandations 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 ; elle renvoie un bloc composé d’une convolution transposée, d’une normalisation de lot et d’une activation ReLU. Cette fonction sert de brique de base pour construire le générateur convolutionnel. Vous trouverez ci-dessous la définition de dc_gen_block() pour vous y familiariser.

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()
    )

Cet exercice fait partie du cours

Deep Learning pour l’image avec PyTorch

Afficher le cours

Instructions

  • Ajoutez le dernier bloc du générateur, faisant passer 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 cet exemple de code.

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