生成对抗网络GAN系列(二)
--- Conditional Generative Adversarial Nets(cGAN 条件GAN)
---文末附代码
Conditional Generative Adversarial Nets 论文链接:https://arxiv.org/abs/1411.1784
1.简介
Conditional GAN 是在原始GAN之后一个比较早的改进版,虽然改动确实很简单,但是idea还是非常具有启发性。
2.核心思想
原始GAN的生成器G学到了数据的分布,生成出来的图片其实是随机的,也就是说这个G的生成过程处于一种没有指导的状态,虽然生成的图片,比如mnist数据集来说,生成的的确是数字,但是却没有具体的说是什么数字。 cGAN相当于在原始GAN的基础上加上一个条件:condition,以此来指导G的生成过程。
3.具体实现
在G和D的输入端都添加条件,则D就相当于多加了一部分信息,从而进行更为具体的判别;G的输入多了一个条件之后,生成的数据也就有了一个具体的方向。
损失函数变为:
用图像解释来说,改动其实很简单:
其中的y就是条件,跟数据x和噪声z同时分别输入进D和G网络中。仅仅做了这个改动而已。
4.结果
可以看出,数字是有序排列的,这是因为我们的y设置为一个包含数字0—9的向量,
比起普通的原始GAN(下图)来说:生成的虽然是数字,但是是无序的随机数字
很明显,cGAN受到条件y的影响能够生成指定的数字,这就是条件发挥了作用
5.代码
pytorch 版本:https://github.com/TeeyoHuang/conditional-GAN
。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:生成对抗网络GAN系列(二)— Conditional Generative Adversarial Nets(cGAN 条件GAN)— 文末附代码 - Python技术站