我正试图了解Google's colab code。您能否弄清为什么他们将real_output
与1的数组进行比较,而将fake_output
与0的数组(纯黑色)进行比较?
def discriminator_loss(real_output, fake_output):
real_loss = cross_entropy(tf.ones_like(real_output), real_output)
fake_loss = cross_entropy(tf.zeros_like(fake_output), fake_output)
total_loss = real_loss + fake_loss
return total_loss
def generator_loss(fake_output):
return cross_entropy(tf.ones_like(fake_output), fake_output)
答案 0 :(得分:0)
回顾一下,在GAN中,您有一个生成图像的生成器。鉴别器是另一个试图预测是否有特定图像来自生成器的网络。我们将生成器创建的图像(也称为“伪造品”)标记为0
,并将真实图像标记为1
。鉴别器的输出范围为[0, 1]
。
您看到的0和1的数组仅仅是分配给生成的图像或真实图像的标签。
您应该注意,生成器仅在“伪”图像上进行训练,生成器无法在真实图像上进行训练,因为它没有产生图像。您还应该注意,生成器已经交换了鉴别器的标签,它试图实现与鉴别器相反的目标。