ComenzarEmpieza gratis

Generador

Un generador de una GAN toma como entrada un vector de ruido aleatorio y produce una imagen generada. Para que su arquitectura sea más reutilizable, pasarás tanto las dimensiones de entrada como las de salida como parámetros del modelo. Así podrás usar el mismo modelo con distintos tamaños de ruido de entrada e imágenes con formas variadas.

Encontrarás torch.nn ya importado como nn. También puedes acceder a una función personalizada gen_block() que devuelve un bloque formado por: capa lineal, normalización por lotes y activación ReLU. La usarás como bloque de construcción del generador.

def gen_block(in_dim, out_dim):
    return nn.Sequential(
        nn.Linear(in_dim, out_dim),
        nn.BatchNorm1d(out_dim),
        nn.ReLU(inplace=True)
    )

Este ejercicio forma parte del curso

Deep Learning para imágenes con PyTorch

Ver curso

Instrucciones del ejercicio

  • Define self.generator como un modelo secuencial.
  • Después del último gen_block, añade una capa lineal con el tamaño de entrada adecuado y el tamaño de salida out_dim.
  • Añade una activación sigmoide después de la capa lineal.
  • En el método forward(), pasa la entrada del modelo por self.generator.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

class Generator(nn.Module):
    def __init__(self, in_dim, out_dim):
        super(Generator, self).__init__()
        # Define generator block
        self.generator = ____(
            gen_block(in_dim, 256),
            gen_block(256, 512),
            gen_block(512, 1024),
          	# Add linear layer
            ____
            # Add activation
            ____
        )

    def forward(self, x):
      	# Pass input through generator
        return ____
Editar y ejecutar código