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
本文对比了《GAN:实战生成对抗网络》中DCGAN的实现,发现生成的图像效果一般,多样性不足,且在30个epoch后继续训练并未显著提升效果。同时,判别器和生成器的loss表现不理想,生成器的loss甚至升高,表明模型可能未学到良好分布。在另一汉字书法字体数据集上,仅5个epoch就出现模型坍塌问题,验证了之前的实验观察。
最低0.47元/天 解锁文章
601

被折叠的 条评论
为什么被折叠?



