Kom igångKom igång gratis

Träna en GAN-modell

Ditt team på PyBooks har gjort goda framsteg med att bygga textgeneratorn med hjälp av ett Generative Adversarial Network (GAN). Du har redan definierat generator- och diskriminatornätverken. Nu är det dags att träna dem. Det sista steget är att generera syntetisk data och jämföra den med den verkliga datan för att se hur väl din GAN har lärt sig. Vi har använt tensorer som indata, och utdatan ska försöka efterlikna indatatensorerna. Teamet på PyBooks kan sedan använda dessa syntetiska data för textanalys, eftersom särdragen kommer att ha samma relationer som i textdata.

Generatorn och diskriminatorn har initierats och sparats i generator respektive discriminator.

Följande variabler har initierats i övningen:

  • seq_length = 5: Längden på varje syntetisk datasekvens
  • num_sequences = 100: Totalt antal genererade sekvenser
  • num_epochs = 50: Antal kompletta genomgångar av datamängden
  • print_every = 10: Hur ofta resultat visas – var 10:e epok

Den här övningen är en del av kursen

Djupinlärning för text med PyTorch

Visa kurs

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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()
Redigera och kör kod