文章目录

  • 1.梯度爆炸
    • 1.gradient clipping(梯度裁剪)
  • 2.梯度弥散

1.梯度爆炸

1.gradient clipping(梯度裁剪)

理论详见
针对梯度爆炸问题,解决方案是引入Gradient Clipping(梯度裁剪)。通过Gradient Clipping,将梯度约束在一个范围内,这样不会使得梯度过大。

在tensorflow 文档中,可以看到Gradient Clipping板块有五个函数。这里,我们仅仅介绍其中两个:

tf.clip_by_norm(t,clip_norm,name=None)
tf.clip_by_global_norm(t_list,clip_norm,use_norm=None,name=None)tf.clip_by_norm(t,clip_norm,name=None)
参数说明: t: a tensor ; clip_norm: 阈值,即maximum L2-norm。
如果 tensor的L2-norm大于clip_norm,则 t = t * clip_norm / l2norm(t)
否则t = ttf.clip_by_global_norm(t_list,clip_norm,use_norm=None,name=None)
参数说明: t_list: multiple tensors; clip_norm: a clipping ratio; use_norm: 如果你
已经计算出global_norm,你可以在use_norm进行指定。tf.clip_by_global_norm(t_list,clip_norm,use_norm=None,name=None)更慢一些,因为它需要
等所有的梯度都求出来才可以进行梯度截断。

通常会使用一种叫”clip gradients “的方法. 它能有效地权重控制在一定范围之内.
算法步骤如下:

  1. 首先设置一个梯度阈值:clip_gradient
  2. 在后向传播中求出各参数的梯度,这里我们不直接使用梯度进去参数更新,我们求这些梯度的l2范数
  3. 然后比较梯度的l2范数||g||与clip_gradient的大小
    如果前者大,求缩放因子clip_gradient/||g||, 由缩放因子可以看出梯度越大,则缩放因子越小,这样便很好地控制了梯度的范围
  4. 最后将梯度乘上缩放因子便得到最后所需的梯度
lr = 0.01
max_grad_norm = 5tvars = tf.trainable_variables()
grads, _ = tf.clip_by_global_norm(tf.gradients(loss, tvars), max_grad_norm)
opt = tf.train.GradientDescentOptimizer(lr)
# opt = tf.train.AdamOptimizer(lr)
optimizer = opt.apply_gradients(zip(grads, tvars))

2.梯度弥散


LSTM解决梯度离散的问题

深度学习2.0-39.RNN训练难题-梯度弥散与梯度爆炸相关推荐

  1. 分布式深度学习:神经网络的分布式训练

    分布式深度学习:神经网络的分布式训练 2016-10-09 14:05:04     深度学习    神经网络   http://www.jiqizhixin.com/article/1611  0  ...

  2. Pytorch深度学习(2) -- RNN及其进阶模型实现 ( GRU LSTM Deep-Rnn Bi-Rnn)

    Pytorch深度学习(2) -- RNN及其进阶模型实现 0 预测训练函数 1.RNN实现 RNN小结 2.GRU实现 GRU小结 3.LSTM实现 LSTM小结 4.Deep-RNN 加入参数nu ...

  3. 深度学习笔记(39) Anchor Boxes

    深度学习笔记(39) Anchor Boxes 1. 一个格子多个对象检测问题 2. Anchor box 3. 对象形状交并比 3. 一个格子一个对象检测问题 4. 额外的细节 5. Anchor ...

  4. Keras深度学习实战(39)——音乐音频分类

    Keras深度学习实战(39)--音乐音频分类 0. 前言 1. 数据集与模型分析 1.1 数据集分析 1.2 模型分析 2. 歌曲流派分类模型 2.1 数据加载与预处理 2.2 模型构建与训练 3. ...

  5. 深度学习实战篇-基于RNN的中文分词探索

    深度学习实战篇-基于RNN的中文分词探索 近年来,深度学习在人工智能的多个领域取得了显著成绩.微软使用的152层深度神经网络在ImageNet的比赛上斩获多项第一,同时在图像识别中超过了人类的识别水平 ...

  6. CV之YOLOv3:深度学习之计算机视觉神经网络Yolov3-5clessses训练自己的数据集全程记录

    CV之YOLOv3:深度学习之计算机视觉神经网络Yolov3-5clessses训练自己的数据集全程记录 目录 视频请观看 训练输出记录 视频请观看 深度学习之计算机视觉神经网络训练Yolov3-5c ...

  7. CV之YOLO:深度学习之计算机视觉神经网络tiny-yolo-5clessses训练自己的数据集全程记录

    CV之YOLO:深度学习之计算机视觉神经网络tiny-yolo-5clessses训练自己的数据集全程记录 目录 训练全部流程记录 训练全部流程记录 1.采用tiny-yolo-5clessses训练 ...

  8. HALCON 20.11:深度学习笔记(6)---有监督训练

    HALCON 20.11:深度学习笔记(6)---有监督训练 HALCON 20.11.0.0中,实现了深度学习方法.不同的DL方法有不同的结果.相应地,它们也使用不同的测量方法来确定网络的" ...

  9. HALCON 20.11:深度学习笔记(4)--- 网络和训练过程

    HALCON 20.11:深度学习笔记(4)--- 网络和训练过程 HALCON 20.11.0.0中,实现了深度学习方法.关于网络和训练过程如下: 在深度学习中,任务是通过网络发送输入图像来执行的. ...

  10. PyTorch-09 循环神经网络RNNLSTM (时间序列表示、RNN循环神经网络、RNN Layer使用、时间序列预测案例、RNN训练难题、解决梯度离散LSTM、LSTM使用、情感分类问题实战)

    PyTorch-09 循环神经网络RNN&LSTM (时间序列表示.RNN循环神经网络.RNN Layer使用.时间序列预测案例(一层的预测点的案例).RNN训练难题(梯度爆炸和梯度离散)和解 ...

最新文章

  1. 来玩Play框架05 数据库
  2. java单例设计模式
  3. 微服务实战(七):从单体式架构迁移到微服务架构
  4. RMAN备份及恢复归档日志的语法
  5. HihoCoder - 1828 Saving Tang Monk II(bfs+动态规划/bfs+优先队列)
  6. 计算机的网络操作题,计算机网络操作题
  7. 冒泡排序、选择排序、插入排序
  8. 单片机 c语言百位加上小数点,51单片机水温控制LCD显示加VB上位机温度曲线绘制...
  9. MED-V实战之镜像测试,MED-V系列之五
  10. 幼儿园门口摆个考勤机 家长接孩子得打卡
  11. Spark调优—参数调优
  12. C case和UVM TB的交互,tube_print, event_sync
  13. xshell xftp下载
  14. 阿里云服务器ECS搭建EMQ快速实现MQTT通信
  15. 从Google Maglev到UCloud Vortex,如何造一个牛逼的负载均衡?
  16. 除了Sublime Text ,还有啥笔记应用能double代码效率?
  17. 把字符串'123.456'转换成浮点数 123.456(廖雪峰,拓展)
  18. 学拳录.第1势 预备势
  19. 【USACO3.1】解题报告
  20. kvm虚拟机启动域时出错:Requestedoperationis not valid: network ‘default‘ is not active

热门文章

  1. STM32:配置定时器为PWM输出模式以及编码器接口模式
  2. Python学习教程:教你用Python通过微信来控制电脑摄像头
  3. Ruby on Rails 目录结构
  4. 【bzoj4530】[Bjoi2014]大融合 LCT维护子树信息
  5. 2.1Android底层开发需要哪些工具
  6. 数据结构基础温故-5.图(上):图的基本概念
  7. Bootstrap里的Modal框
  8. lintcode :最长公共前缀
  9. Linux修行学习,网站持更
  10. 基础算法之插入排序Insertion Sort