Bir GAN modelini eğitme
PyBooks ekibin, Generative Adversarial Network (GAN) kullanarak metin üreteci geliştirme konusunda iyi ilerledi. Üreteç (generator) ve ayrıştırıcı (discriminator) ağlarını başarıyla tanımladın. Şimdi onları eğitme zamanı. Son adım, biraz sahte veri üretip gerçek verilerle karşılaştırarak GAN'inin ne kadar iyi öğrendiğini görmektir. Girdi olarak tensörler kullandık ve çıktı, girdi tensörlerine benzemeye çalışacak. PyBooks ekibi daha sonra bu sentetik veriyi metin analizi için kullanabilir; çünkü özellikler, metin verisiyle aynı ilişkilere sahip olacaktır.
Üreteç ve ayrıştırıcı sırasıyla generator ve discriminator değişkenlerine başlatıldı ve kaydedildi.
Bu egzersizde aşağıdaki değişkenler başlatıldı:
seq_length = 5: Her bir sentetik veri dizisinin uzunluğunum_sequences = 100: Üretilen toplam dizi sayısınum_epochs = 50: Veri kümesi üzerinde tam geçiş sayısıprint_every = 10: Çıktı gösterim sıklığı; sonuçlar her 10 epoch'ta bir gösterilir
Bu egzersiz
PyTorch ile Metin için Deep Learning
kursunun bir parçasıdırUygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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()