生成器损失
在训练 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