为什么我们在编译组合 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。