ComenzarEmpieza gratis

Discriminador convolucional

Con el generador de la DCGAN listo, el último paso antes de poder entrenarlo es definir el discriminador convolucional.

torch.nn está importado por ti con su alias habitual. Para construir el discriminador convolucional, usarás una función personalizada gc_disc_block() que devuelve un bloque con una convolución seguida de una normalización por lotes y la activación Leaky ReLU. Puedes revisar 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

Deep Learning para imágenes con PyTorch

Ver curso

Instrucciones del ejercicio

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

Ejercicio interactivo práctico

Prueba este ejercicio y completa 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