ComenzarEmpieza gratis

Discriminador

Una vez definido el generador, el siguiente paso para construir una GAN es construir el discriminador. Toma la salida del generador como entrada y produce una predicción binaria: ¿la entrada es generada o real?

Encontrarás torch.nn ya importado como nn. También puedes acceder a una función personalizada disc_block() que devuelve un bloque de una capa lineal seguida de una activación LeakyReLU. Lo usarás como bloque de construcción para el discriminador.

def disc_block(in_dim, out_dim):

    return nn.Sequential(

        nn.Linear(in_dim, 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 último bloque discriminador al modelo, con el tamaño de entrada adecuado y la salida de un 256.
  • Después del último bloque discriminador, añade una capa lineal para asignar la salida al tamaño de un 1.
  • Define el método forward() para pasar la imagen de entrada a través del bloque secuencial definido en __init__().

Ejercicio interactivo práctico

Prueba este ejercicio completando el código de muestra.

class Discriminator(nn.Module):
    def __init__(self, im_dim):
        super(Discriminator, self).__init__()
        self.disc = nn.Sequential(
            disc_block(im_dim, 1024),
            disc_block(1024, 512),
            # Define last discriminator block
            ____,
            # Add a linear layer
            ____,
        )

    def forward(self, x):
        # Define the forward method
        ____
Editar y ejecutar código