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