用各種GAN生成MNIST數字
阿新 • • 發佈:2019-01-09
用各種GAN生成MNIST數字
完整程式碼:https://github.com/SongDark/GAN_collections
資料獲取
MNIST資料集的獲取可以參考這篇部落格:
https://blog.csdn.net/songbinxu/article/details/82992264
需要注意的是MNIST資料的值域範圍,有的源是原本的
,有的歸一化到了
。
生成器和判別器
實現了CNN和MLP兩種版本。CNN結構參考自這裡,MLP結構參考自這裡。
有關 Spectral Norm
在dense
層、conv2d
層和deconv2d
層中都實現了Spectral Normalization,可以自由選擇或取消。Spectral Normalization是用來限制判別器D的,不應該加到生成器G中。
有關 Gradient Clipping
所謂 Gradient Clipping(GC) 就是將引數限制在某個範圍內,比如 ,它也是用來限制判別器D的,不應該加到生成器G中。WGAN的原始版本必須加GC,以保證判別器D滿足Lipschiz連續條件。我的經驗是,即使是其他GAN型別,有時候加上GC也有奇效,比如在LSGAN裡,沒有加GC時是無法生成MNIST的,加上之後就好了。
各種GAN的目標函式
目前涉及到的有GAN、WGAN、WGAN-GP、DRAGAN、LSGAN和CGAN。
以後有空再補其他的。
GAN
WGAN
WGAN-GP
LSGAN
DRAGAN
CGAN