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
Instrucciones del ejercicio
- Define
self.generatorcomo 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 salidaout_dim. - Añade una activación sigmoide después de la capa lineal.
- En el método
forward(), pasa la entrada del modelo porself.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 ____