GAN训练心得

先抱怨一句,GAN训练真不容易…
一开始GAN总是训练效果很差,使用的是CNN去训练generator和discriminator,但是出来的总是“晶体图”,找到了一些技巧,然后自己实践了一下,也遇到了一些蠢哭的事情。
我换了一个网络,即调整了原来CNN的参数,或者多加入了一些层,结果出来的效果非常可观,看来首先要找到一个对的网络。

我尝试了用TensorFlow去实现GAN,一开始是用的Keras。实现第一遍的时候,其实还不错,使用的是全连接网络,没有使用CNN。
第二次想尝试WGAN,就跟着一位博主的文章开始了练习,但是敲完之后,结果非常糟糕,后来检查发现没有控制trainable_variables,在训练generator的时候,把discriminator的参数也更新了。
后来发现生成的图片都非常暗,感觉哪里有问题,但是有没发现,后来在看别人代码的时候才发现,我将图片的RGB值由(0,225)缩放到 (-1,1)的时候,我缩放错了,直接除以了255,结果缩放成了(0,1)。

下面是我觉得很不错的技巧:

  1. 输入的图片经过处理,将0-255的值变为-1到1的值。
    images = (images/255.0)*2 - 1

  2. 在generator输出层使用tanh激励函数,使得输出范围在 (-1,1)

  3. 保存生成的图片时,将矩阵值缩放到[0,1]之间
    gen_image = (gen_image+1) / 2

  4. 使用leaky_relu激励函数,使得负值可以有一定的比重

  5. 使用BatchNormalization,使分布更均匀,最后一层不要使用。

  6. 在训练generator和discriminator的时候,一定要保证另外一个的参数是不变的,不能同时更新两个网络的参数。

  7. 如果训练很容易卡住,可以考虑使用WGAN

  8. 可以选择使用RMSprop optimizer

更多有用的技巧:
GAN训练技巧
Tips on train GAN

  • 15
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值