开始使用免费开始使用

训练 GAN 模型

您在 PyBooks 的团队已经在使用生成式对抗网络(GAN)构建文本生成器方面取得了不错的进展。您已经成功定义了生成器和判别器网络。现在该训练它们了。最后一步是生成一些伪造数据,并与真实数据进行比较,看看 GAN 学习得如何。我们使用张量作为输入,输出会尽量逼近输入张量。随后,PyBooks 团队可以将这些合成数据用于文本分析,因为这些特征将与文本数据保持相同的关系。

生成器和判别器已分别初始化并保存到 generatordiscriminator

本练习中已初始化以下变量:

  • 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()
编辑并运行代码