Generador convolucional
Define un generador convolucional siguiendo las pautas de DCGAN comentadas en el último vídeo.
torch.nn ya se ha importado como nn para tu comodidad. Además, está disponible la función personalizada dc_gen_block(), que devuelve un bloque con una convolución traspuesta, normalización por lotes y activación ReLU. Esta función sirve como componente base para construir el generador convolucional. Puedes revisar la definición de dc_gen_block() a continuación.
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()
)
Este ejercicio forma parte del curso
Deep Learning para imágenes con PyTorch
Instrucciones del ejercicio
- Añade el último bloque del generador, mapeando el tamaño de los mapas de características a
256. - Añade una convolución traspuesta con tamaño de salida
3. - Añade la activación tanh.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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)