论文:https://arxiv.org/abs/1511.06434

        参考:DCGAN结构

        核心要素︰在不改变GAN原理的情况下提出了一些有助于增强稳定性的tricks

DCGAN网络介绍

        DCGAN是GAN的直接扩展,它在判别器和生成器中分别显式地使用卷积和卷积转置层。它首先在Radford在文章 Unsupervised Representation Learning With Deep Convolutional Generative Adversarial Networks 提出了一种基于深层卷积生成对抗网络的无监督表示学习方法。

        其中判别器显式使用卷积层,生成器显式使用卷积转置层。判别器由跨步卷积层(strided convolution layers )、批归一化层(batch norm layers) 和 LeakyReLU 激活函数构成。例如如果输入是3x64x64图像,则输出是输入来自真实数据分布的标量概率。生成器由卷积转置层(convolutional-transpose)、批归一化层和 ReLU 激活层组成。其输入是从标准正态分布中提取的潜在矢量(latent vector) z,输出是其生成的3x64x64的RGB图像。

        跨步卷积转置层(strided conv-transpose layers)允许将潜在矢量(latent vector)变换为具有与图像相同的shape。

        用到的tricks如下所示:

  • 所有pooling都用strided convolutions代替,pooling的下采样是损失信息的,strided convolutions可以让模型自己学习损失的信息。(对于之前的GAN采用的是pooling层,比如说pooling=2,即四个选一个,这是损失信息的) 
  • 生成器G和判别器D都要用BN层(解决过拟合问题,BN在每一层输出都归一化)
  • 把全连接层去掉,用全卷积层代替
  • 生成器除了输出层,激活函数统一使用ReLU(效果好,不解释),输出层用Tanh。
  • 判别器所有的层的激活函数统一都是LeakyReLU。激活函数参考https://zhuanlan.zhihu.com/p/172254089

DCGAN网络结构

生成网络结构

        DCGAN 的判别器和生成器都使用了卷积神经网络(CNN)来替代GAN 中的多层感知机,同时为了使整个网络可微,拿掉了CNN 中的池化层,另外将全连接层以全局池化层替代以减轻计算量。

         生成网络(Generator)接收一个随机噪声z,然后通过上采样(up-sampling)生成图像G(z)。上采样主要采用反卷积算法,G接收一个100-d随机噪声z,经过Project and reshape(实际上就是一个全连接层),转化为一个4*4*1024的feature map,然后经过多个反卷积层,生成大小为64*64*3的图像。

 判别网络结构

        判别网络(Discriminator)的输入为一张图片,经过下采样(down-sampling,卷积运算),再接全连接层处理,送入sigmoid函数,输出真假概率。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐