Entrenar un modelo GAN
Tu equipo en PyBooks ha avanzado mucho construyendo el generador de texto con una Generative Adversarial Network (GAN). Ya has definido correctamente las redes del generador y del discriminador. Ahora toca entrenarlas. El paso final es generar algunos datos falsos y compararlos con los reales para ver qué tan bien ha aprendido tu GAN. Hemos usado tensores como entrada y la salida intentará parecerse a los tensores de entrada. El equipo de PyBooks podrá usar luego estos datos sintéticos para análisis de texto, ya que las características mantendrán la misma relación que en los datos de texto.
El generador y el discriminador se han inicializado y guardado en generator y discriminator, respectivamente.
En el ejercicio se han inicializado las siguientes variables:
seq_length = 5: Longitud de cada secuencia de datos sintéticosnum_sequences = 100: Número total de secuencias generadasnum_epochs = 50: Número de pasadas completas por el conjunto de datosprint_every = 10: Frecuencia de visualización de resultados, mostrando cada 10 épocas
Este ejercicio forma parte del curso
Deep Learning para texto con PyTorch
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# Define the loss function and optimizer
criterion = nn.____()
optimizer_gen = ____(generator.parameters(), lr=0.001)
optimizer_disc = ____(discriminator.parameters(), lr=0.001)
for epoch in range(num_epochs):
for real_data in data:
# Unsqueezing real_data and prevent gradient recalculations
real_data = real_data.____(0)
noise = torch.rand((1, seq_length))
fake_data = generator(noise)
disc_real = discriminator(real_data)
disc_fake = discriminator(fake_data.____())
loss_disc = criterion(disc_real, torch.ones_like(disc_real)) + criterion(disc_fake, torch.zeros_like(disc_fake))
optimizer_disc.zero_grad()
loss_disc.backward()
optimizer_disc.step()