Spectral Normalization for Keras
The simple Keras implementation of ICLR 2018 paper, Spectral Normalization for Generative Adversarial Networks.
[openreview][arixiv][original code(chainer)]
[Hackmd][github]
Result
CIFAR10
DCGAN architecture
10epoch |
With SN |
Without SN |
With GP |
|
|
Without GP |
|
|
100epoch |
With SN |
Without SN |
With GP |
|
|
Without GP |
|
|
200epoch |
With SN |
Without SN |
With GP |
|
|
Without GP |
|
|
300epoch |
With SN |
Without SN |
With GP |
|
|
Without GP |
|
|
400epoch |
With SN |
Without SN |
With GP |
|
|
Without GP |
|
|
500epoch |
with SN |
without SN |
With GP |
|
|
Without GP |
|
|
Loss |
with SN |
without SN |
With GP |
|
|
Without GP |
|
|
ResNet architecture
10epoch |
With SN |
Without SN |
With GP |
|
|
Without GP |
|
|
100epoch |
With SN |
Without SN |
With GP |
|
|
Without GP |
|
|
200epoch |
With SN |
Without SN |
With GP |
|
|
Without GP |
|
|
300epoch |
With SN |
Without SN |
With GP |
|
|
Without GP |
|
|
400epoch |
With SN |
Without SN |
With GP |
|
|
Without GP |
|
|
500epoch |
with SN |
without SN |
With GP |
|
|
Without GP |
|
|
Loss |
with SN |
without SN |
With GP |
|
|
Without GP |
|
|
How to use?
- Move SpectralNormalizationKeras.py in your dir
- Import these layer class
from SpectralNormalizationKeras import DenseSN, ConvSN1D, ConvSN2D, ConvSN3D
- Use these layers in your discriminator as usual
Example notebook
CIFAR10 with DCGAN architecture
CIFAR10 with ResNet architecture
Model Detail
Architecture
DCGAN
Generator
Discriminator
ResNet GAN
Generator
Generator UpSampling ResBlock
Dicriminator
Discriminator DownSampling ResBlock
Discriminator ResBlock
Issue
Acknowledgment
- Thank @anshkapil pointed out and @IFeelBloated corrected this implementation.