小编Pig*_*hou的帖子

Wasserstein 损失可以是负数吗?

我目前正在用(大约)Wasserstein 损失在 keras 中训练 WGAN,如下所示:

def wasserstein_loss(y_true, y_pred):
    return K.mean(y_true * y_pred)
Run Code Online (Sandbox Code Playgroud)

但是,这种损失显然可能是负数,这对我来说很奇怪。

我对 WGAN 进行了 200 个 epoch 的训练,得到了下面的评论家 Wasserstein 损失训练曲线。 Wasserstein 损失训练曲线

上述损失计算为

d_loss_valid = critic.train_on_batch(real, np.ones((batch_size, 1)))
d_loss_fake = critic.train_on_batch(fake, -np.ones((batch_size, 1)))
d_loss, _ = 0.5*np.add(d_loss_valid, d_loss_fake)
Run Code Online (Sandbox Code Playgroud)

结果生成的样本质量很好,所以我认为我正确地训练了 WGAN。但是我仍然无法理解为什么 Wasserstein 损失可能为负并且模型仍然有效。根据原始WGAN论文,Wasserstein loss可以作为GAN的性能指标,那么我们应该如何解释呢?我有什么误解吗?

python machine-learning neural-network keras generative-adversarial-network

7
推荐指数
1
解决办法
4729
查看次数