CGAN是最基础的GAN模型之一,全称conditional GAN,意为条件生成对抗网络。
先说一下GAN和CGAN的区别,最基本的GAN判别器只能判别真假,但无法对生成数据进行控制,即如果有两种以上类别的训练数据,那么GAN的生成器无法指定生成的数据,判别器也无法对真数据+假标签进行判别。为了解决上述问题,CGAN的生成器将噪声和标签一起作为输入,判别器将生成对象,原对象和标签一起作为输入,同时CGAN优化了判别器的判定标准,将假数据+任意标签和真数据+错误标签判别为假,将真数据+正确标签判别为真。这样就可以由我们自定义标签达到输出想要数据的目的了。
CGAN的网络结构如下:
代码与GAN并没有太大区别,唯一的不同就是generator和discriminator新增label输入,具体样式如下:
另外只需要在generator和disciminator模型构建处修改Model喂入数据即可。