开始使用免费开始使用

生成器损失

在训练 GAN 之前,您需要为生成器和判别器各自定义损失函数。我们先从前者开始。

回顾一下,生成器的目标是产出足以欺骗判别器、让其将伪造图像判为真实的样本。因此,如果判别器把生成的图像判为假(标签 0),生成器就会受到更大的损失。

请定义 gen_loss() 函数来计算生成器的损失。它接收四个参数:

  • gen,生成器模型
  • disc,判别器模型
  • num_images,批次中的图像数量
  • z_dim,输入随机噪声的维度

本练习是课程的一部分

使用 PyTorch 进行图像深度学习

查看课程

练习说明

  • 生成形状为 num_images × z_dim 的随机噪声,并将其赋给 noise
  • 使用生成器根据 noise 生成假图像,并将其赋给 fake
  • 获取判别器对该假图像的预测。
  • 通过在判别器预测与同形状的全 1 张量之间调用 criterion 来计算生成器的损失。

交互式实操练习

通过完成这段示例代码来试试这个练习。

def gen_loss(gen, disc, criterion, num_images, z_dim):
    # Define random noise
    noise = ____(num_images, z_dim)
    # Generate fake image
    fake = ____
    # Get discriminator's prediction on the fake image
    disc_pred = ____
    # Compute generator loss
    criterion = nn.BCEWithLogitsLoss()
    gen_loss = ____(____, ____)
    return gen_loss
编辑并运行代码