我是靠谱客的博主 超级老师,最近开发中收集的这篇文章主要介绍深度学习_GAN_GAN优化训练方法汇总(全网最全,持续更新),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.输入Normalize

  1. 将输入图片Normalize到 [ − 1 , 1 ] [-1,1] [11]之间。
  2. 生成器最后一层的输出使用Tanh激活函数。

Normalize非常重要,没有处理过的图片是没办法收敛的。图片Normalize一种简单的方法是(images-127.5)/127.5,然后送到判别器去训练。同理生成的图片也要经过判别器,即生成器的输出也是-1到1之间,所以使用Tanh激活函数更加合适。

2.替换原始的GAN损失函数和标签反转

  1. 原始GAN损失函数会出现训练早期梯度消失和Mode collapse(模型崩溃)问题。可以使用Earth Mover distance(推土机距离)来优化。

  2. 实际工程中用反转标签来训练生成器更加方便,即把生成的图片当成real的标签来训练,把真实的图片当成fake来训练。

3.使用具有球形结构的随机噪声 Z Z Z作为输入

  1. 不要使用均匀分布进行采样

  1. 使用高斯分布进行采样

4.使用BatchNorm

  1. 一个mini-batch中必须只有real数据或者fake数据,不要把他们混在一起训练。
  2. 如果能用BatchNorm就用BatchNorm,如果不能用则用instance normalization。

5.避免使用ReLU,MaxPool等操作引入稀疏梯度

  1. GAN的稳定性会因为引入稀疏梯度受到很大影响。
  2. 最好使用类LeakyReLU的激活函数。(D和G中都使用)
  3. 对于下采样,最好使用:Average Pooling或者卷积+stride。
  4. 对于上采样,最好使用:PixelShuffle或者转置卷积+stride。

最好去掉整个Pooling逻辑,因为使用Pooling会损失信息,这对于GAN训练没有益处。

6.使用Soft和Noisy的标签

  1. Soft Label,即使用 [ 0.7 − 1.2 ] [0.7-1.2] [0.71.2] [ 0 − 0.3 ] [0-0.3] [00.3]两个区间的随机值来代替正样本和负样本的Hard Label。
  2. 可以在训练时对标签加一些噪声,比如随机翻转部分样本的标签。

7.使用Adam优化器

  1. Adam优化器对于GAN来说非常有用。
  2. 在生成器中使用Adam,在判别器中使用SGD。

8.追踪训练失败的信号

  1. 判别器的损失=0说明模型训练失败。
  2. 如果生成器的损失稳步下降,说明判别器没有起作用。

9.在输入端适当添加噪声

  1. 在判别器的输入中加入一些人工噪声。
  2. 在生成器的每层中都加入高斯噪声。

10.生成器和判别器差异化训练

  1. 多训练判别器,尤其是加了噪声的时候。

11.Two Timescale Update Rule (TTUR)

对判别器和生成器使用不同的学习速度。使用较低的学习率更新生成器,判别器使用较高的学习率进行更新。

12. Gradient Penalty (梯度惩罚)

使用梯度惩罚机制可以极大增强 GAN 的稳定性,尽可能减少mode collapse问题的产生。

13. Spectral Normalization(谱归一化)

Spectral normalization可以用在判别器的weight normalization技术,可以确保判别器是K-Lipschitz连续的。

14. 使用多个GAN结构

可以使用多个GAN/多生成器/多判别器结构来让GAN训练更稳定,提升整体效果,解决更难的问题。

最后

以上就是超级老师为你收集整理的深度学习_GAN_GAN优化训练方法汇总(全网最全,持续更新)的全部内容,希望文章能够帮你解决深度学习_GAN_GAN优化训练方法汇总(全网最全,持续更新)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部