ComenzarEmpieza gratis

Generador convolucional

Define un generador convolucional siguiendo las directrices DCGAN comentadas en el último vídeo.

torch.nn Se ha importado previamente como nn para tu comodidad. Además, hay disponible una función personalizada dc_gen_block(), que devuelve un bloque de una convolución transpuesta, una normalización por lotes y una activación ReLU. Esta función sirve como componente fundamental para construir el generador convolucional. A continuación, puedes familiarizarte con la definición de « dc_gen_block() ».

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

Aprendizaje profundo para imágenes con PyTorch

Ver curso

Instrucciones del ejercicio

  • Añade el último bloque generador, asignando el tamaño de los mapas de características a un 256.
  • Añade una convolución transpuesta con un tamaño de salida de 3.
  • Añade la activación tanh.

Ejercicio interactivo práctico

Prueba este ejercicio completando 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