Summaries of GAN
Cross Domain
Image-to-Image Translation
Supervised
- Pix2pix
- tf.nn.sigmoid_cross_entropy_with_logits,没有经过 sigmoid 处理。
- -tf.log(predict_real + EPS) ,predict_real 经过 sigmoid 处理。
- nn.BCELoss
- Pix2pix
Unsupervised
CoGAN
2 GAN
nn.functional.cross_entropy / tf.nn.softmax_cross_entropy_with_logits,最后输出的是2个值,而不是1个值,这里与其它的实现不同。
CycleGAN, DualGAN
2 GAN
DiscoGAN
MSE,使用 sigmoid 处理。
Unsupervised Image-to-Image Translation Networks (NIPS 2017)
VAE + GAN:CoGAN的改进。
Domain Transfer Network
GAN Loss
Blog
- Can softmax be used with cross entropy? : MachineLearning
- Minimizing the Negative Log-Likelihood, in English
- PyTorch中的Loss Fucntion | sshuair’s note
- pytorch loss function 总结
nn.CrossEntropyLoss = LogSoftMax + nn.NLLLoss
Generator / Discriminator
- Binary Cross Entropy (来自
DCGAN
)- nn.BCELoss / tf.nn.sigmoid_cross_entropy_with_logits
- DCGAN
- Categorical Cross Entropy,很少见
- nn.NLLLoss
- Auxiliary Classifier
- nn.CrossEntropyLoss / tf.nn.softmax_cross_entropy_with_logits
- MSE
- Reconstruction Error
- 大多使用L1,因为L2会使得生成的图片看起来模糊
LSGAN
WGAN
WGAN_GP
- Binary Cross Entropy (来自
LSGAN
D
输出是否经过sigmoid
,不同实现不一样,大多数实现不经过sigmoid
处理。- Blog
WGAN
WGAN
与原始GAN
第一种形式相比,只改了四点判别器最后一层去掉
sigmoid
生成器和判别器的 loss 不取 log
每次更新判别器的参数之后把它们的绝对值截断到不超过一个固定常数c
不要用基于动量的优化算法(包括
momentum
和Adam
),推荐RMSProp
,SGD
也行(只对使用WGAN
的时候)
Blog
WGAN_GP
WGAN的改进
- 去掉
weight clip
,加上gradient penalty
。
- 去掉
D
输出不经过sigmoid
Blog
总结
不经常使用:
- 加上log的基本上不在使用,原因见:令人拍案叫绝的 Wasserstein GAN,彻底解决GAN训练不稳定问题
大多数情况下使用:
tf.nn.sigmoid_cross_entropy_with_logits
MSE
LSGAN
avg
WGAN
WGAN_GP
大多都让选择使用哪一种