我现在尝试结合一级像素损失和一个对抗性损失来学习自动编码图像。代码如下。在
gan_model = tfgan.gan_model(
generator_fn=nets.autoencoder,
discriminator_fn=nets.discriminator,
real_data=images,
generator_inputs=images)
gan_loss = tfgan.gan_loss(
gan_model,
generator_loss_fn=tfgan.losses.wasserstein_generator_loss,
discriminator_loss_fn=tfgan.losses.wasserstein_discriminator_loss,
gradient_penalty=1.0)
l1_pixel_loss = tf.norm(gan_model.real_data - gan_model.generated_data, ord=1)
# Modify the loss tuple to include the pixel loss.
gan_loss = tfgan.losses.combine_adversarial_loss(
gan_loss, gan_model, l1_pixel_loss,
weight_factor=FLAGS.weight_factor)
# Create the train ops, which calculate gradients and apply updates to weights.
train_ops = tfgan.gan_train_ops(
gan_model,
gan_loss,
generator_optimizer=tf.train.AdamOptimizer(gen_lr, 0.5),
discriminator_optimizer=tf.train.AdamOptimizer(dis_lr, 0.5))
# Run the train ops in the alternating training scheme.
tfgan.gan_train(
train_ops,
hooks=[tf.train.StopAtStepHook(num_steps=FLAGS.max_number_of_steps)],
logdir=FLAGS.train_log_dir)
不过,我想使用GANEstimator来简化代码。GANEstimator的典型例子如下。在
^{pr2}$有人知道如何在GANEstimator中使用组合的“对抗性损失”?在
谢谢。在
在您的链接中,GANEstimator具有以下参数:
generator_loss_fn
应该是你的l1像素丢失。在discriminator_loss_fn
应该是你的共同对抗性损失。在我刚刚遇到了同样的问题(这个解决方案是针对TensorFlow r1.12)。在
通读代码,^{} 取
gan_loss
元组,用联合敌方损失代替生成器损失。这意味着我们需要替换估计器中的generator_loss_fn
。估计器的所有其他损失函数都有参数:gan_model, **kwargs
。我们定义了自己的函数,并将其用作发电机损耗函数:有关参数的详细信息,请参阅文档:^{}
而且
**kwargs
与组合的对抗性损失函数不兼容,所以我使用了一个小技巧。在相关问题 更多 >
编程相关推荐