训练 GAN 模型
您在 PyBooks 的团队已经在使用生成式对抗网络(GAN)构建文本生成器方面取得了不错的进展。您已经成功定义了生成器和判别器网络。现在该训练它们了。最后一步是生成一些伪造数据,并与真实数据进行比较,看看 GAN 学习得如何。我们使用张量作为输入,输出会尽量逼近输入张量。随后,PyBooks 团队可以将这些合成数据用于文本分析,因为这些特征将与文本数据保持相同的关系。
生成器和判别器已分别初始化并保存到 generator 和 discriminator。
本练习中已初始化以下变量:
seq_length = 5:每个合成数据序列的长度num_sequences = 100:生成的序列总数num_epochs = 50:完整遍历数据集的轮数print_every = 10:输出显示频率,每 10 个 epoch 显示结果
本练习是课程的一部分
使用 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()