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