CommencerCommencer gratuitement

Générateur convolutif

Définissez un générateur convolutif en suivant les directives DCGAN abordées dans la dernière vidéo.

torch.nn a été pré-importé sous le nom « nn » pour votre commodité. De plus, une fonction personnalisée dc_gen_block() est disponible, qui renvoie un bloc de convolution transposée, de normalisation par lots et d'activation ReLU. Cette fonction sert de composant fondamental pour la construction du générateur convolutif. Vous pouvez vous familiariser avec la définition d'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()

    )

Cet exercice fait partie du cours

Deep learning pour les images avec PyTorch

Afficher le cours

Instructions

  • Ajoutez le dernier bloc générateur, en mappant la taille des cartes de caractéristiques à l'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