1、



http://blog.csdn.net/kuaitoukid/article/details/42120961

2、

http://blog.csdn.net/huangynn/article/details/52947894

梯度爆炸

原因:梯度变得非常大,使得学习过程难以继续

现象:观察log,注意每一轮迭代后的loss。loss随着每轮迭代越来越大,最终超过了浮点型表示的范围,就变成了NaN。

措施:
1. 减小solver.prototxt中的base_lr,至少减小一个数量级。如果有多个loss layer,需要找出哪个损失层导致了梯度爆炸,并在train_val.prototxt中减小该层的loss_weight,而非是减小通用的base_lr。
2. 设置clip gradient,用于限制过大的diff

不当的损失函数

原因:有时候损失层中loss的计算可能导致NaN的出现。比如,给InfogainLoss层(信息熵损失)输入没有归一化的值,使用带有bug的自定义损失层等等。

现象:观测训练产生的log时一开始并不能看到异常,loss也在逐步的降低,但突然之间NaN就出现了。

措施:看看你是否能重现这个错误,在loss layer中加入一些输出以进行调试。

示例:有一次我使用的loss归一化了batch中label错误的次数。如果某个label从未在batch中出现过,loss就会变成NaN。在这种情况下,可以用足够大的batch来尽量避免这个错误。

不当的输入

原因:输入中就含有NaN。

现象:每当学习的过程中碰到这个错误的输入,就会变成NaN。观察log的时候也许不能察觉任何异常,loss逐步的降低,但突然间就变成NaN了。

措施:重整你的数据集,确保训练集和验证集里面没有损坏的图片。调试中你可以使用一个简单的网络来读取输入层,有一个缺省的loss,并过一遍所有输入,如果其中有错误的输入,这个缺省的层也会产生NaN。

案例:有一次公司需要训练一个模型,把标注好的图片放在了七牛上,拉下来的时候发生了dns劫持,有一张图片被换成了淘宝的购物二维码,且这个二维码格式与原图的格式不符合,因此成为了一张“损坏”图片。每次训练遇到这个图片的时候就会产生NaN。良好的习惯是,你有一个检测性的网络,每次训练目标网络之前把所有的样本在这个检测性的网络里面过一遍,去掉非法值。

池化层中步长比核的尺寸大

如下例所示,当池化层中stride > kernel的时候会在y中产生NaN

    layer {name: "faulty_pooling"type: "Pooling"bottom: "x"top: "y"pooling_param {pool: AVEstride: 5kernel: 3}}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

致谢

http://stackoverflow.com/questions/33962226/common-causes-of-NaNs-during-training

caffe loss一直nan什么情况相关推荐

  1. 网络训练时出现loss为nan的情况(已解决)

    最近在使用SSD网络跑自己的数据集时,训练刚开始就出现loss=nan值的情况,经过多方查找资料,发现训练过程中loss出现nan值时,一般是下列问题导致的: 数据集的问题,可能存在数据本身就存在na ...

  2. Pytorch训练模型损失Loss为Nan或者无穷大(INF)原因

    目录 1. Nan 和 INF 2.出现 Nan 和 INF 常见原因汇总 3.原因分析与解决方法 3.1.输入数据有误 3.2.学习率过高 --> 梯度爆炸进 --> Nan 3.3.损 ...

  3. 神经网络训练过程中出现loss为nan,神经元坏死

    最近在手撸Tensorflow2版本的Faster RCNN模型,稍后会进行整理.但在准备好了模型和训练数据之后的训练环节中出现了大岔子,即训练过程中loss变为nan.nan表示not a numb ...

  4. 使用caffe训练时Loss变为nan的原因

    极视角高校计算机视觉算法邀请赛目前正在报名中,欢迎各高校在读学生报名参加,大奖+商业项目参与机会+数据库等你来拿!!!咨询报名请加小助手(微信号:Extreme-Vision) 本文为极市平台原创编译 ...

  5. matlab损失函数出现nan,[译]在训练过程中loss出现NaN的原因以及可以采取的方法。...

    1.梯度爆炸 原因:在学习过程中,梯度变得非常大,使得学习的过程偏离了正常的轨迹. 症状:观察输出日志(runtime log)中每次迭代的loss值,你会发现loss随着迭代有明显的增长,最后因为l ...

  6. loss 为nan???

    在训练的过程中经常会出现loss=NaN的情况,在网上查了查一般做法是减小学习速率或者增大batch_size.尝试了一下减小学习速率,可以解决问题.但是不明白为什么.所以整理了一下loss为nan的 ...

  7. pytorch训练过程中loss出现NaN的原因及可采取的方法

    在pytorch训练过程中出现loss=nan的情况 1.学习率太高. 2.loss函数 3.对于回归问题,可能出现了除0 的计算,加一个很小的余项可能可以解决 4.数据本身,是否存在Nan,可以用n ...

  8. tensorflow训练神经网络时loss出现nan的问题

    tensorflow训练神经网络时loss出现nan的问题 一般情况下原因是由于优化器上的学习比率learning_rate定义值太大,如: train_step = tf.compat.v1.tra ...

  9. 解决mmdetection训练过程loss为nan的问题

    我之前遇到多次loss为nan,一次是由于数据标注出现问题,换不同的模型参数均出现此问题,因此需要仔细检查数据格式:有一次是换了个neck的结构,loss变为nan,后面通过将学习率调为原来的1/10 ...

最新文章

  1. 发布Wear OS by Google开发者预览版
  2. blocked java线程_Java线程状态:BLOCKED与WAITING的区别
  3. C++11之异步调用
  4. 天津财经计算机专业研究生分数线,天津财经大学各专业2015—2020年硕士研究生复试分数线汇总...
  5. OSI七层网络模型浅析
  6. esxi虚机启动慢的问题
  7. 新的开始 | Arthas GitHub Star 破万后的回顾和展望
  8. tomcat最大连接数_SpringBoot内嵌Tomcat自定义配置用法
  9. es6 属性的可枚举性和遍历
  10. elementui 单独修改一个label的样式
  11. 如何使用SQL Server Reporting Services将数据格式转换为有价值的数据集
  12. oracle凭证编号,R12 AP模块的发票过账后如何关联对应的凭证编号
  13. linux虚拟机系统下安装jdk
  14. 27000系列标准族谱
  15. 马尔可夫链预测模型的应用——以预测降雨量为例
  16. 指数增长模型matlab代码_多元思维模型1:复利模型——拥抱指数增长
  17. 国务院办公厅关于2015年部分节假日安排的通知
  18. 好心情:抗抑郁药物的不良反应和处理措施
  19. 三维建模,三维地理信息的作用
  20. Win10更新系统,VirtualBox与win10不兼容处理办法

热门文章

  1. boost::mp11::mp_partition相关用法的测试程序
  2. boost::leaf::try_handle_some用法的测试程序
  3. boost::hana::Comparable用法的测试程序
  4. boost::hana::test::TestLogical用法的测试程序
  5. boost::interprocess::interprocess_condition用法的测试程序
  6. boost::fusion::find用法的测试程序
  7. allocator_is_always_equal的实例
  8. DCMTK:读取DICOM图像,添加一个Curve并将其写回
  9. DCMTK:测试CT像框FG类
  10. VTK:可视化之AlphaFrequency