訓練 GAN 模型
你在 PyBooks 的團隊已經在使用生成式對抗網路(GAN)建立文字生成器方面取得不錯的進展。你已成功定義了產生器(generator)與判別器(discriminator)網路。現在,是時候訓練它們了。最後一步是生成一些假資料,並與真實資料比較,看看你的 GAN 學得如何。我們使用張量作為輸入,輸出會嘗試近似輸入的張量。PyBooks 團隊之後可以用這些合成資料做文字分析,因為其特徵之間的關係會與文字資料相同。
產生器與判別器已初始化並分別儲存在 generator 與 discriminator。
本練習已初始化下列變數:
seq_length = 5:每筆合成資料序列的長度num_sequences = 100:要生成的序列總數num_epochs = 50:完整跑過資料集的次數print_every = 10:輸出顯示頻率,每 10 個 epoch 顯示結果一次
本練習屬於課程
Deep Learning for Text with PyTorch
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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()