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