1、什么是DCGAN
简单来说就是将原始的GAN和CNN结合到了一起。
生成器和判别器都使用了深度卷积神经网络来生成对抗网络
2、为什么DCGAN
原始的GAN可能存在的一些问题:
- 很难使一对模型(G和D同时)收敛因为在原始的GAN的设计中,生成器和判别器两者的损失函数是一个博弈的过程,在梯度下降过程中一个可能在走下山,另一个可能就在上山,
- 生成器G发生模式崩溃
- 生成器梯度消失问题,当判别器非常准确时,判别器的损失很快收敛到0,从而无法提供可靠的路径使生成器的梯度继续更新,造成生成器梯度消失。
DCGAN在很大程度上去处理这些问题。
3、DCGAN的网络结构设计

- 取消所有的pooling层,G网络使用反卷积进行上采样,D网络采用stride缩小图片
- G网络中使用Relu作为激活函数,最后一层采用tanh作为激活函数
- D网络中使用LeakyReLU作为激活函数
- 在G网和D网中都添加了披标准化处理BN
- 直接将BN层应用到所有层会导致样本震荡和不稳定,所以在generator的输出层和discriminator的输入层不使用。
- 论文中提供的超参数:learning_rate:0.0002 batch size:128
