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