深度学习2.0-39.RNN训练难题-梯度弥散与梯度爆炸
文章目录
- 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 “的方法. 它能有效地权重控制在一定范围之内.
算法步骤如下:
- 首先设置一个梯度阈值:clip_gradient
- 在后向传播中求出各参数的梯度,这里我们不直接使用梯度进去参数更新,我们求这些梯度的l2范数
- 然后比较梯度的l2范数||g||与clip_gradient的大小
如果前者大,求缩放因子clip_gradient/||g||, 由缩放因子可以看出梯度越大,则缩放因子越小,这样便很好地控制了梯度的范围 - 最后将梯度乘上缩放因子便得到最后所需的梯度
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训练难题-梯度弥散与梯度爆炸相关推荐
- 分布式深度学习:神经网络的分布式训练
分布式深度学习:神经网络的分布式训练 2016-10-09 14:05:04 深度学习 神经网络 http://www.jiqizhixin.com/article/1611 0 ...
- 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 ...
- 深度学习笔记(39) Anchor Boxes
深度学习笔记(39) Anchor Boxes 1. 一个格子多个对象检测问题 2. Anchor box 3. 对象形状交并比 3. 一个格子一个对象检测问题 4. 额外的细节 5. Anchor ...
- Keras深度学习实战(39)——音乐音频分类
Keras深度学习实战(39)--音乐音频分类 0. 前言 1. 数据集与模型分析 1.1 数据集分析 1.2 模型分析 2. 歌曲流派分类模型 2.1 数据加载与预处理 2.2 模型构建与训练 3. ...
- 深度学习实战篇-基于RNN的中文分词探索
深度学习实战篇-基于RNN的中文分词探索 近年来,深度学习在人工智能的多个领域取得了显著成绩.微软使用的152层深度神经网络在ImageNet的比赛上斩获多项第一,同时在图像识别中超过了人类的识别水平 ...
- CV之YOLOv3:深度学习之计算机视觉神经网络Yolov3-5clessses训练自己的数据集全程记录
CV之YOLOv3:深度学习之计算机视觉神经网络Yolov3-5clessses训练自己的数据集全程记录 目录 视频请观看 训练输出记录 视频请观看 深度学习之计算机视觉神经网络训练Yolov3-5c ...
- CV之YOLO:深度学习之计算机视觉神经网络tiny-yolo-5clessses训练自己的数据集全程记录
CV之YOLO:深度学习之计算机视觉神经网络tiny-yolo-5clessses训练自己的数据集全程记录 目录 训练全部流程记录 训练全部流程记录 1.采用tiny-yolo-5clessses训练 ...
- HALCON 20.11:深度学习笔记(6)---有监督训练
HALCON 20.11:深度学习笔记(6)---有监督训练 HALCON 20.11.0.0中,实现了深度学习方法.不同的DL方法有不同的结果.相应地,它们也使用不同的测量方法来确定网络的" ...
- HALCON 20.11:深度学习笔记(4)--- 网络和训练过程
HALCON 20.11:深度学习笔记(4)--- 网络和训练过程 HALCON 20.11.0.0中,实现了深度学习方法.关于网络和训练过程如下: 在深度学习中,任务是通过网络发送输入图像来执行的. ...
- PyTorch-09 循环神经网络RNNLSTM (时间序列表示、RNN循环神经网络、RNN Layer使用、时间序列预测案例、RNN训练难题、解决梯度离散LSTM、LSTM使用、情感分类问题实战)
PyTorch-09 循环神经网络RNN&LSTM (时间序列表示.RNN循环神经网络.RNN Layer使用.时间序列预测案例(一层的预测点的案例).RNN训练难题(梯度爆炸和梯度离散)和解 ...
最新文章
- 来玩Play框架05 数据库
- java单例设计模式
- 微服务实战(七):从单体式架构迁移到微服务架构
- RMAN备份及恢复归档日志的语法
- HihoCoder - 1828 Saving Tang Monk II(bfs+动态规划/bfs+优先队列)
- 计算机的网络操作题,计算机网络操作题
- 冒泡排序、选择排序、插入排序
- 单片机 c语言百位加上小数点,51单片机水温控制LCD显示加VB上位机温度曲线绘制...
- MED-V实战之镜像测试,MED-V系列之五
- 幼儿园门口摆个考勤机 家长接孩子得打卡
- Spark调优—参数调优
- C case和UVM TB的交互,tube_print, event_sync
- xshell xftp下载
- 阿里云服务器ECS搭建EMQ快速实现MQTT通信
- 从Google Maglev到UCloud Vortex,如何造一个牛逼的负载均衡?
- 除了Sublime Text ,还有啥笔记应用能double代码效率?
- 把字符串'123.456'转换成浮点数 123.456(廖雪峰,拓展)
- 学拳录.第1势 预备势
- 【USACO3.1】解题报告
- kvm虚拟机启动域时出错:Requestedoperationis not valid: network ‘default‘ is not active