深度学习网络训练,Loss出现Nan的解决办法

文章目录

前言

一、原因

二、典型实例

1. 梯度爆炸

2. 不当的损失函数

3. 不当的输入


前言

模型的训练不是单纯的调参,重要的是能针对出现的各种问题提出正确的解决方案。本文就训练网络loss出现Nan的原因做了具体分析,并给出了详细的解决方案,希望对大家训练模型有所帮助。


一、原因

一般来说,出现NaN有以下几种情况:

  1. 如果在迭代的100轮数以内,出现NaN,一般情况下的原因是你的学习率过高,需要降低学习率。可以不断降低学习率直至不出现NaN为止,一般来说低于现有学习率1-10倍即可。
  2. 如果当前的网络是类似于RNN的循环神经网络的话,出现NaN可能是因为梯度爆炸的原因,一个有效的方式是增加“gradient clipping”(梯度截断来解决)。
  3. 可能用0作了除数。
  4. 可能用0或者负数作为自然对数。
  5. 需要计算loss的数组越界(尤其是自己定义了一个新的网络,可能出现这种情况)。
  6. 在某些涉及指数计算,可能最后算得值为INF(无穷)(比如不做其他处理的softmax中分子分母需要计算ex(x),值过大,最后可能为INF/INF,得到NaN,此时你要确认你使用的softmax中在计算exp(x) 做了相关处理(比如减去最大值等等))。
  7. 训练深度网络的时候,label缺失问题也会导致loss一直是nan,需要检查label。

二、典型实例

1. 梯度爆炸

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

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

措施:

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

2. 不当的损失函数

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

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

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

3. 不当的输入

原因:输入中就含有NaN。

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

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

参考:https://zhuanlan.zhihu.com/p/599887666

          江大白

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/571319.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++核心编程——4.5 运算符重载

4.5.0 运算符重载概念 对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 4.5.1 加号运算符重载 作用:实现两个自定义数据类型相加的运算 class Person { public:Person() {};Person(int a, int b){this->m_A a;this…

Bayes判别:统计学中的经典分类方法

在统计和机器学习领域,Bayes判别是一个基于概率理论的强大工具,用于解决分类问题。它基于Bayes定理,通过计算和比较后验概率来进行决策。这种方法在处理不确定性和不完整数据时表现尤为出色,因此在医学诊断、邮件过滤、语音识别等…

《十》Qt各种对话框之QFontDialog

QFontDialog 在介绍 QFontDialog 对话框之前,我们先简单介绍一下 QFont 字体类。QFont 主要用于控制文本显示的字体,字体主要有四大属性:①字体家族 family 决定字体外观家族,比如宋体、楷体等; ②字号 pointSize &am…

css文字和span在一行对不齐

1.需求背景 父盒子中有两个span,但是span中的文字对不齐。如下图,明显右边的文字偏高 处理后的效果(已经对齐,图中标记的是基本的div结构): 2.该问题出现的原因: span1设置的高度比span2内…

thsi指针用法总结

1 c类对象中的变量和函数是分开存储的 2 所以对象共用一份成员函数,类的大小是指非静态的成员变量; this 完成链式操作 const 修饰成员函数

【Java 解析全国详细地址】Java 利用正则表达式完美解析全国省市区地址

这里写自定义目录标题 Java使用正则解析省市区/县 具体地址问题场景上demo运行结果 Java使用正则解析省市区/县 具体地址 问题场景 OCR识别营业执照 获取详细地址并拆分 上demo import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import j…

使用API有效率地管理Dynadot域名,自查账户信息

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

日本岛津电子天平UW UX 系列series 精密电子天平Shimadzu使用说明

日本岛津电子天平UW UX 系列series 精密电子天平Shimadzu使用说明

2024春季春日主题活动策划方案

2024解冻派对“春日浪漫”主题活动策划方案-32P 方案页码:32页 文件格式:pptx 方案简介: 春来一季,新生欢喜 花香丨微风丨阳光 活动唤起【春日浪漫记忆】! 年轻人不一样的派对活动 可以与朋友/小朋友/家人互动…

MT3030 天梯赛

跟MT3029战神小码哥类似,都是贪心堆。注意开long long 这里的堆顶为战斗力最小的,便于贪心的反悔操作。先按容忍度从大到小排序(q中总容忍度取决于最小的容忍度),再向q中存数,存到不能容忍之后再把堆顶踢出…

最简单也最复杂的德语动词,柯桥德语培训

德语人一定遇到过这个难题:ie组合到底发什么音? 说起haben,大家可能第一感觉是“这么简单的动词也要讲?不就是‘拥有’的意思吗?” 没错,haben的基本含义是“拥有,包含”,但是在某些…

Vue3后台管理系统推荐

目录 项目概述 🍟 项目展示 功能特点 🥗 结语 💨 项目概述 🍟 基于Vue 3框架与Element-Plus UI组件库技术精心构建的后端管理模板。该模板系统已成功实现一个基础的权限管理模块,宗旨在于为追求高效二次开发的开发…

制作一个RISC-V的操作系统十四-任务同步和锁

文章目录 并发与同步临界区和锁锁死锁解决死锁自旋锁(spin lock)原子性问题原子操作实现amoswap.w.aq例子 另一种方法自旋锁的注意事项代码其他同步技术 并发与同步 控制流:可理解为任务或进程 中断也可以理解为一个切换到另一个任务&#…

【Linux网络】DHCP原理与配置

目录 一、DHCP工作原理 1.了解DHCP服务 2.使用DHCP的好处 3.DHCP的分配方式 二、DHCP的租约过程 三、DHCP场景应用实验 一、DHCP工作原理 1.了解DHCP服务 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 由Internet工作…

<计算机网络自顶向下> 无连接传输UDP

UDP:User Datagram Protocol “尽力而为”的服务 报文可能丢掉或者乱序好处: 效率高(不建立连接无拥塞控制和流量控制【应用->传输的速率主机->网络的速率】)报文段的头部很小(开销小)UDP被用于 流媒…

数据结构系列-堆排序当中的T-TOK问题

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 之前我们讲到了堆排序的实现逻辑,那么接下来我们重点关注的就是其中的T-TOK问题 T-TOK说简单点,就是说,假如有10000个数据(随机的…

bottle,Python轻量级的Web框架!

目录 前言 安装 特性 基本功能 1. 路由功能 2. 请求参数获取 3. 静态文件服务 4. 模板渲染 高级功能 1. 中间件 2. 插件 3. 异步处理 实际应用场景 1. 小型Web应用 2. RESTful API服务 3. Web界面与后端逻辑分离 4. Web服务的快速原型开发 总结 前言 大家好&#xff0c…

YOLOv9改进策略 | 添加注意力篇 | TripletAttention三重注意力机制(附代码+机制原理+添加教程)

一、本文介绍 本文给大家带来的改进是Triplet Attention三重注意力机制。这个机制,它通过三个不同的视角来分析输入的数据,就好比三个人从不同的角度来观察同一幅画,然后共同决定哪些部分最值得注意。三重注意力机制的主要思想是在网络中引入…

解密数字经济时代,元宇宙企业如何重塑商业价值?

从复盘中感知自我,坚持和过去对话,并引入未来的思考,飞天云动是一个典型的案例。 在科技的飞速发展和数字化浪潮的推动下,元宇宙这一概念如同一颗冉冉升起的新星,吸引了全球的目光。就目前而言,围绕元宇宙…

Ubuntu终端自动补全

文章目录 前言配置安装zsh安装 oh-my-zsh安装自动补全插件zsh-autosuggestions 参考 前言 Oh My Zsh 是一个针对命令行 shell 的开源框架,主要用于增强和美化命令行环境。它建立在 Zsh(一种强大的 shell 替代品)之上,提供了丰富的…
最新文章