前言

这是看了李宏毅(Hung-yi Lee)的GAN课程做的作业。

基于tensorflow框架,第一次实现参考了别人的代码。

 

1.网络模型搭建

生成器4层,从小到大,经历一次全连接,2次上采样,3次卷积,最后tanh()**后输出。

鉴别器5层,4次卷积后,接一次全连接,最后sigmoid()**后输出。

中间的卷积层后接BN+LeakyReLU。

GAN - Anime 第一次训练

 

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是有点进步了......

GAN - Anime 第一次训练

 

但是dscriminator在real和fake上的loss一直在涨。我都要怀疑是不是写错方程把minimize写成maximize了......

GAN - Anime 第一次训练

GAN - Anime 第一次训练

 

 

从output来看,也是一样的奇怪,鉴别器像坏了一样,识别不出来真假了。

中期开始,就仿佛陷入了奇怪的颠簸。

1万次迭代的时候,还有点彩色的感觉。

10万次就变成了很奇怪的灰蒙蒙的样子,而discriminatior没有对这种灰蒙蒙作出批评。

10万次~20万次,好像没什么进步。

 

GAN - Anime 第一次训练GAN - Anime 第一次训练

GAN - Anime 第一次训练

GAN - Anime 第一次训练

 

不知道原因,头疼。

准备再看看论文,复现别人的模型,或者改lossfunction。

190227

相关文章: