ComenzarEmpieza gratis

Generador

Un generador GAN toma un vector de ruido aleatorio como entrada y produce una imagen generada. Para que su arquitectura sea más reutilizable, pasarás tanto las formas de entrada como las de salida como parámetros al modelo. De esta forma, puedes utilizar el mismo modelo con diferentes tamaños de ruido de entrada e imágenes de 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 de: capa lineal, normalización por lotes y activación ReLU. Lo usarás como bloque de construcción para el 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

Aprendizaje profundo 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 a través de self.generator.

Ejercicio interactivo práctico

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