faster rcnn第二阶段loss出现nan_深度学习训练Loss异常Debug思路

本文介绍了在深度学习训练中遇到Loss异常,如NaN或不合理数值时的Debug思路。作者通过改造文字检测网络时遇到的Loss负数问题,分享了如何检查Loss函数逻辑、代码实现和输入数据的正确性。同时,提出了数据异常Debug的建议,包括观察数据分布、使用断点和科学视图工具,以及通过统计函数验证数据假设。
摘要由CSDN通过智能技术生成

ce03b488fc9b5ec74c8a25156acb030d.png

如果Loss异常怎么办?

首先我指的异常是Loss计算出现了明显的逻辑错误(始终为0或者为特别大的一个数字),而不是因为优化问题导致Loss不收敛,Nan这类问题。

一个令人悲伤的话题

我之前改造了一个文字检测网络使其能识别手写字体,相应地对loss部分做出了一些改动。结果训练时一开始发现Loss大的离谱,后经一番Debug后Loss成了负数!?这个问题就很尴尬了,Loss为何成了负数呢?

最后仔细排查发现是数据标注位置出现了错误,Label中出现了负数导致Loss为负 (๑•̀ㅂ•́) ✧

因为当时基于别人代码进行修改,对数据打标签的一些代码细节并没有彻底读懂,因此在改动的时候考虑不全面,闹出了Loss为负数这个天大的笑话.其实出bug再所难免,不要指望自己一次coding就全对,但是在做任务前要有一个清晰的概念,对基本的数学和逻辑原理都要心中有数;如果是改造别人的代码,需要对他人的代码有比较彻底的了解,防止忽视一些细节导致错误发生。经此一事,我总结了Loss异常Debug的一些心得体会:

Loss异常Debug思路:

1.仔细检查Loss函数的设计逻辑是否正确,如果loss由多部分组成,可以分别输出检查,缩小范围。

2.检查具体实现的函数代码,看看函数用的对不对,还有就是数据类型转换有没有错误。很多函数都需要指定axis,这部分容易弄错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值