ComenzarEmpieza gratis

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

Ver curso

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)
Editar y ejecutar código