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 datasekvensnum_sequences = 100: Totalt antal genererade sekvensernum_epochs = 50: Antal kompletta genomgångar av datamängdenprint_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
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()