1.《GAN:实战生成对抗网络》中的DCGAN,参考代码链接为https://github.com/jacobgil/keras-dcgan,
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Reshape
from keras.layers.core import Activation
from keras.layers.normalization import BatchNormalization
from keras.layers.convolutional import UpSampling2D
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.layers.core import Flatten
from keras.optimizers import SGD
from keras.datasets import mnist
import numpy as np
from PIL import Image
import argparse
import math
import matplotlib.pyplot as plt
def generator_model():
model = Sequential()
#输入100维,输出1024维,中间激活函数全用的tanh,
model.add(Dense(input_dim=100, output_dim=1024))
model.add(Activation('tanh'))
#图像从1024->128*7*7
model.add(Dense(128*7*7))
model.add(BatchNormalization())
model.add(Activation('tanh'))
#reshape成128通道的7*7特征图,
model.add(Reshape((7, 7, 128), input_shape=(128*7*7,)))
#Upsampleing2D成14*14特征图
model.add(UpSampling2D(size=(2, 2)))
#卷积成64通道的
model.add(Conv2D(64, (5, 5), padding='same'))
model.add(Activation('tanh'))
#Upsampleing2D成28*28特征图
model.add(UpSampling2D(size=(2, 2)))
#卷积成128通道的
model.add(Conv2D(1, (5, 5), padding='same'))
model.add(Activation('tanh'))
return model
def discriminator_model():
model = Sequential()
#输入的是1通道的28*28图像,通过卷积之后变成64通道的28*28的特征图
model.add(Conv2D(64, (5, 5),padding='same',input_shape=(28, 28, 1)))
model.add(Activation('tanh'))
#MaxPooling2D缩放至64通道的14*14特征图
model.add(MaxPooling2D(pool_size=(2, 2)))
#卷积成128通道的14*14的特征图
model.add(Conv2D(128, (5, 5)))
model.add(Activation('tanh'))
#MaxPooling2D缩放至128通道的14*14特征图
model.add(MaxPooling2D(pool_size=(2, 2)))
#将14*14*128展平
model.add(Flatten())
#全连接输出1024维
model.add(Dense(1024))
model.add(Activ