Deep Learning 之 训练过程中出现NaN问题
来源:互联网 发布:淘宝小号出售批发 编辑:程序博客网 时间:2024/06/04 08:58
相信很多人都遇到过训练一个deep model的过程中,loss突然变成了NaN。在这里对这个问题做一个总结。
一般来说,出现NaN有以下几种情况:
1.如果在迭代的100轮以内,出现NaN,一般情况下的原因是因为你的学习率过高,需要降低学习率。可以不断降低学习率直至不出现NaN为止,一般来说低于现有学习率1-10倍即可。
2.如果当前的网络是类似于RNN的循环神经网络的话,出现NaN可能是因为梯度爆炸的原因,一个有效的方式是增加“gradient clipping”(梯度截断来解决)
3.可能用0作为了除数;
4.可能0或者负数作为自然对数
5.需要计算loss的数组越界(尤其是自己,自定义了一个新的网络,可能出现这种情况)
6.在某些涉及指数计算,可能最后算得值为INF(无穷)(比如不做其他处理的softmax中分子分母需要计算exp(x),值过大,最后可能为INF/INF,得到NaN,此时你要确认你使用的softmax中在计算exp(x)做了相关处理(比如减去最大值等等))
参考:
http://russellsstewart.com/notes/0.html
阅读全文
0 0
- Deep Learning 之 训练过程中出现NaN问题
- Deep Learning学习 之 Deep Learning训练过程
- Deep Learning训练过程
- Deep Learning训练过程
- tensorflow训练中出现nan问题
- tensorflow训练中出现nan问题
- Deep Learning 训练/学习过程
- 【二】 Deep Learning训练过程
- (2)Deep Learning训练过程
- deep learning 训练过程 wake-sleep
- 在卷积神经网络训练过程中loss出现NaN的原因以及可以采取的方法
- faster rcnn训练过程出现loss=nan解决办法
- tensorflow 运行过程中loss出现 NaN
- Deep Learning的基本思想以及训练过程
- CNNs学习笔记(2):deep learning训练过程
- 深度学习训练中cost突然出现NaN
- HTK训练过程中出现的问题及解决方法
- Deep Learning学习过程
- 学习
- ANDROID设计模式之单例模式
- Masonry和UITableView-FDTemplateLayoutCell的结合使用
- Storm-kafka-hbase基础编程一
- 备用
- Deep Learning 之 训练过程中出现NaN问题
- Android 平板通过USB口连接小票打印机
- Android Support兼容包详解
- 欢迎使用CSDN-markdown编辑器
- 南阳ACM-喷水装置(二)
- Java 自学的成长路径
- 基于TCP的不同IO版本的时间性能分析
- QWidget的六个刷新函数(居然有QWidget::erase函数,且并不产生绘制事件)
- 解析xml的4种方法详解