前言
这是看了李宏毅(Hung-yi Lee)的GAN课程做的作业。
基于tensorflow框架,第一次实现参考了别人的代码。
1.网络模型搭建
生成器4层,从小到大,经历一次全连接,2次上采样,3次卷积,最后tanh()**后输出。
鉴别器5层,4次卷积后,接一次全连接,最后sigmoid()**后输出。
中间的卷积层后接BN+LeakyReLU。
2.训练策略(超参数)
z_dimensions=100是别人的代码里预设的。
batch_size=50是我觉得凑个整数比较好,后来看到某论文说大家一般用bsize=64,后悔不已。(bigGAN的256除外)
迭代步骤D:G=5:1是某篇论文推荐的。
Iteration开了20w次我有点后悔,好像一般几万之后效果不佳就可以人为停止,开始调整模型了。
#基础设置
input_dir = ''
RESULT_ROOT = ''
Z_DIMENSIONS = 100
BATCH_SIZE = 50
ITERATION = 200000 #训练次数
D_UPDATE = 5 #每次迭代更新鉴别器次数
G_UPDATE = 1 #一般推荐生成器更新少一点,鉴别器更新多一点
Learningrate = 0.0001
3结果呈现
挺奇怪的......在每层LeakyReLU之前,做BN的时候,没有让gamma进入训练单位。
在服务器上跑了一晚上,20万次迭代,最后结果还是跟别人的差很多。
generation是有点进步了......
但是dscriminator在real和fake上的loss一直在涨。我都要怀疑是不是写错方程把minimize写成maximize了......
从output来看,也是一样的奇怪,鉴别器像坏了一样,识别不出来真假了。
中期开始,就仿佛陷入了奇怪的颠簸。
1万次迭代的时候,还有点彩色的感觉。
10万次就变成了很奇怪的灰蒙蒙的样子,而discriminatior没有对这种灰蒙蒙作出批评。
10万次~20万次,好像没什么进步。
不知道原因,头疼。
准备再看看论文,复现别人的模型,或者改lossfunction。
190227