ComenzarEmpieza gratis

Discriminador convolucional

Con el generador DCGAN listo, el último paso antes de poder proceder al entrenamiento es definir el discriminador convolucional.

torch.nn se importa con su alias habitual. Para construir el discriminador convolucional, utilizarás una función personalizada « gc_disc_block() » que devuelve un bloque de una convolución seguida de una norma por lotes y la activación Leaky ReLU. Puedes consultar la definición de « dc_disc_block() » a continuación.

def dc_disc_block(in_dim, out_dim, kernel_size, stride):

    return nn.Sequential(

        nn.Conv2d(in_dim, out_dim, kernel_size, stride=stride),

        nn.BatchNorm2d(out_dim),

        nn.LeakyReLU(0.2),

    )

Este ejercicio forma parte del curso

Aprendizaje profundo para imágenes con PyTorch

Ver curso

Instrucciones del ejercicio

  • Añade el primer bloque discriminador utilizando la función personalizada « dc_disc_block() » con mapas de características de entrada « 3 » y mapas de características de salida « 512 ».
  • Añade la capa convolucional con un tamaño de salida de 1.
  • En el método forward(), pasa la entrada a través del bloque secuencial que definiste en __init__().

Ejercicio interactivo práctico

Prueba este ejercicio completando el código de muestra.

class DCDiscriminator(nn.Module):
    def __init__(self, kernel_size=4, stride=2):
        super(DCDiscriminator, self).__init__()
        self.disc = nn.Sequential(
          	# Add first discriminator block
            dc_disc_block(3, 512, kernel_size, stride),
            dc_disc_block(512, 1024, kernel_size, stride),
          	# Add a convolution
            nn.Conv2d(1024, 1, kernel_size, stride=stride),
        )

    def forward(self, x):
        # Pass input through sequential block
        x = ____
        return x.view(len(x), -1)
Editar y ejecutar código