背景介绍
DCGAN(Deep Convolutional Generative Adversarial Networks, 深度卷积生成式对抗网络):于2016年发表于ICLR,是GAN类型网络的升级版本,其中改变的只是将GAN中的全连接层变为卷积层和上采样层,这样可以使用更少的参数实现更大像素图像的生成。
DCGAN特点
将全连接层换成了卷积层和上采样层,极大缩小参数量,可以实现大尺寸图像的生成。
DCGAN图像分析
TensorFlow2.0实现
1 | import os |
模型运行结果
小技巧
- 图像输入可以先将其归一化到0-1之间或者-1-1之间,因为网络的参数一般都比较小,所以归一化后计算方便,收敛较快。
- 注意其中的一些维度变换和numpy,tensorflow常用操作,否则在阅读代码时可能会产生一些困难。
- 可以设置一些权重的保存方式,学习率的下降方式和早停方式。
- DCGAN对于网络结构,优化器参数,网络层的一些超参数都是非常敏感的,效果不好不容易发现原因,这可能需要较多的工程实践经验。
- 先创建判别器,然后进行compile,这样判别器就固定了,然后创建生成器时,不要训练判别器,需要将判别器的trainable改成False,此时不会影响之前固定的判别器,这个可以通过模型的_collection_collected_trainable_weights属性查看,如果该属性为空,则模型不训练,否则模型可以训练,compile之后,该属性固定,无论后面如何修改trainable,只要不重新compile,都不影响训练。
DCGAN小结
DCGAN是一种非常简单的生成式对抗网络,从上图可以看出DCGAN模型的参数量只有0.4M,这样使得大图像的生成变得可能,DCGAN没有特别的创新点,运用了深度卷积在初代GAN上,为以后GAN的发展提供了思路。