【发布时间】:2018-12-20 12:34:34
【问题描述】:
我已经深入研究了 gans,并且也在 pytorch 中实现了它,现在我正在研究 gans 背后的核心统计数据,当时我正在查看那个网站 Mathematics behing Gans 它说
“Loss(G) = - Loss(D),请注意,我们将生成器成本定义为判别器成本的负值。这是因为我们没有明确的方法来评估生成器的成本。”
但是在实现 gan 时,我们将生成器的损失定义为:
Bintropy 生成器生成的图像的判别器输出与原始论文中的真实标签和以下代码(由我实现和测试)之间的交叉熵损失
# train generator
z_ = to.randn(minibatch,100 ).view(-1, 100, 1, 1)
z_ = Variable(z_.cuda())
gen_images = generator(z_)
D_fake_decisions = discriminator(gen_images).squeeze()
G_loss = criterion(D_fake_decisions,real_labels)
discriminator.zero_grad()
generator.zero_grad()
G_loss.backward()
opt_Gen.step()
请解释一下两者的区别,以及正确的那个
代码链接:https://github.com/mabdullahrafique/Gan_with_Pytorch/blob/master/DCGan_mnist.ipynb
谢谢
【问题讨论】:
-
Binary Cross Entropy 不是 Generator 的损失,而是 Discriminator 的损失。我在回答中写了一点解释。
标签: machine-learning computer-vision artificial-intelligence conv-neural-network generative-adversarial-network