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
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 deself.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 ____