DCGAN的原理及Pytorch实现

follow this video: https://www.youtube.com/watch?v=IZtv9s_Wx9I

paper: https://arxiv.org/pdf/1511.06434.pdf

与Simple GAN相比,loss部分是一样的,主要的不同在于结构,从全连接改成卷积。

结构

DCGAN的原理及Pytorch实现 

  • 使用指定步长的卷积层代替池化层
  • 生成器和判别器中都使用BN
  • 移除全连接层
  • 生成器除去输出层采用Tanh外,全部使用ReLU作为激活函数
  • 判别器所有层都使用LeakyReLU作为激活函数

DCAGN通过以上的改进得到的生成器结构如下:

DCGAN的原理及Pytorch实现

100 * 1 * 1  -> 3 * 64 * 64

判别器结构:

DCGAN的原理及Pytorch实现

  

 3 * 64 * 64 -> 1 * 1 * 1

实现

先弄清楚 PyTorch中 nn.Conv2d与nn.ConvTranspose2d函数的用法

完整代码 https://github.com/growvv/GAN-Pytorch/tree/main/DCGAN