为什么我们在编译组合 GAN (SRGAN) 网络时使用两个损失
Why we use two losses while compiling the combined GAN (SRGAN) network
我正在研究 SRGAN(超分辨率 GAN)。我遇到了一段代码,其中作者在编译鉴别器时使用了 MSE 损失。和两个损失,即二进制交叉熵和 MSE,同时编译组合 GAN 模型。我不明白这些损失函数的用途。这是代码。
编译鉴别器的代码是:
discriminator = build_discriminator()
discriminator.compile(loss='mse', optimizer=common_optimizer, metrics=['accuracy']
编译组合GAN模型的代码为:
adversarial_model = Model([input_low_resolution, input_high_resolution], [probs, features])
adversarial_model.compile(loss=['binary_crossentropy', 'mse'], loss_weights=[1e-3, 1],
optimizer=common_optimizer)
还有一件事.. 对于下面的代码行,我得到如下所示的输出。我不明白这个输出是什么意思。
g_loss = adversarial_model.train_on_batch([low_resolution_images, high_resolution_images],
[real_labels, image_features])
Result of the above mentioned code
如果是生成器生成的假图像,则对真实图像进行MSE损失。如果是判别器判断的假图,使用BCE loss。
我正在研究 SRGAN(超分辨率 GAN)。我遇到了一段代码,其中作者在编译鉴别器时使用了 MSE 损失。和两个损失,即二进制交叉熵和 MSE,同时编译组合 GAN 模型。我不明白这些损失函数的用途。这是代码。 编译鉴别器的代码是:
discriminator = build_discriminator()
discriminator.compile(loss='mse', optimizer=common_optimizer, metrics=['accuracy']
编译组合GAN模型的代码为:
adversarial_model = Model([input_low_resolution, input_high_resolution], [probs, features])
adversarial_model.compile(loss=['binary_crossentropy', 'mse'], loss_weights=[1e-3, 1],
optimizer=common_optimizer)
还有一件事.. 对于下面的代码行,我得到如下所示的输出。我不明白这个输出是什么意思。
g_loss = adversarial_model.train_on_batch([low_resolution_images, high_resolution_images],
[real_labels, image_features])
Result of the above mentioned code
如果是生成器生成的假图像,则对真实图像进行MSE损失。如果是判别器判断的假图,使用BCE loss。