Spectral Normalization for Keras

September 10, 2018 ยท View on GitHub

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

10epochWith SNWithout SN
With GP
Without GP
100epochWith SNWithout SN
With GP
Without GP
200epochWith SNWithout SN
With GP
Without GP
300epochWith SNWithout SN
With GP
Without GP
400epochWith SNWithout SN
With GP
Without GP
500epochwith SNwithout SN
With GP
Without GP
Losswith SNwithout SN
With GP
Without GP

ResNet architecture

10epochWith SNWithout SN
With GP
Without GP
100epochWith SNWithout SN
With GP
Without GP
200epochWith SNWithout SN
With GP
Without GP
300epochWith SNWithout SN
With GP
Without GP
400epochWith SNWithout SN
With GP
Without GP
500epochwith SNwithout SN
With GP
Without GP
Losswith SNwithout SN
With GP
Without GP

How to use?

  1. Move SpectralNormalizationKeras.py in your dir
  2. Import these layer class
from SpectralNormalizationKeras import DenseSN, ConvSN1D, ConvSN2D, ConvSN3D
  1. 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

  • Compare with WGAN-GP
  • Projection Discriminator

Acknowledgment

  • Thank @anshkapil pointed out and @IFeelBloated corrected this implementation.