如果Loss异常怎么办?

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

一个令人悲伤的话题

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

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

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

Loss异常Debug思路:

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

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

3.如果上面都没有问题,需要检查输入数据(input和label)是否正确,可以将输入数据array输出观察或者将Label可视化为图片。

数据异常Debug思路:

  • 宏观地观察输入数据内容可以迅速检查错误,如果一时半会看不出错误,可以在疑似问题的地方加入断点,借助pycharm的sciView模式,观察数据分布

Tips:python console和Expression搭配Debug效果更好哦,下图是debug模式下几个重要模块,注意sciView只能读出np.ndarray类型的数据.

  • 学会使用使用np.where()判断,sum()等统计函数验证自己的怀疑点,首先假设数据正常,应该服从什么样的分布,然后使用一些函数或代码段去验证自己的假设。如果数据本身就是图像数组,可以直接可视化看一下图片有没有什么问题,包括网络的输出都可以图像化看一下。
  • 要学会分析Loss的含义,从数学角度入手,去分析什么操作会导致Loss异常

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

  1. 计算机视觉与深度学习 | 基于Faster R-CNN的目标检测(深度学习Matlab代码)

    ===================================================== github:https://github.com/MichaelBeechan CSDN: ...

  2. 【Faster R-CNN论文精度系列】从Faster R-CNN源码中,我们“学习”到了什么?

    [Faster R-CNN论文精度系列] (如下为建议阅读顺序) 1[Faster R-CNN论文精度系列]从Faster R-CNN源码中,我们"学习"到了什么? 2[Faste ...

  3. Python - 深度学习训练过程使用matplotlib.pyplot实时动态显示loss和acc曲线

    1 深度学习训练过程中实时动态显示loss和acc曲线 可参考代码如下: # -*- coding: utf-8 -*-import matplotlib.pyplot as pltif __name ...

  4. 深度学习——训练时碰到的超参数

    深度学习--训练时碰到的超参数 文章目录 深度学习--训练时碰到的超参数 一.前言​ 二.一些常见的超参数 学习率(Learning rate) 迭代次数(iteration) batchsize e ...

  5. 调参侠看过来!两个提高深度学习训练效率的绝技

    1. 训练的瓶颈在哪里 GPU利用率低:模型训练时GPU显存沾满了,但是GPU的利用率比较不稳定,有时候0%,有时候90%,忽高忽低. 训练的数据量大:训练数据大,在百万/千万的量级,训练一个Epoc ...

  6. 深度学习 英文 训练阶段_半监督深度学习训练和实现小Tricks

    临近毕业,忽然想实现一下一些比较经典的半监督深度学习算法.恰逢一周前有个师妹问我有没有关于半监督深度学习训练技巧的文章,我一想,好像没有,便想自己写一篇. Talk is cheap, show yo ...

  7. 【深度学习】PyTorch深度学习训练可视化工具visdom

    PyTorch Author:louwill Machine Learning Lab 在进行深度学习实验时,能够可视化地对训练过程和结果进行展示是非常有必要的.除了Torch版本的TensorBoa ...

  8. 今日上午,清华大学发布中国首个高校自研深度学习训练框架—计图Jittor

    在百度狂推PaddlePaddle框架,以及旷视计划本月25日发布自研深度学习训练框架MegEngine之际,清华大学突然发布首个中国高校自研深度学习框架Jittor,中文名为计图. 官网链接 htt ...

  9. 训练深度学习_深度学习训练tricks整理1

    深度学习训练tricks整理1 环境:pytorch1.4.0 + Ubuntu16.04 参考: 数据增强策略(一)​mp.weixin.qq.com https://zhuanlan.zhihu. ...

  10. Python 中的可执行对象 eval,exec 和 compile与其在深度学习训练中的应用实例

    Python 中的可执行对象 eval,exec 和 compile 与其在深度学习训练中的应用实例 eval 计算指定表达式的值.也就是说它要执行的python代码只能是单个表达式(注意eval不支 ...

最新文章

  1. 01 | Spring Data JPA 初识
  2. Java并发编程—常见面试题
  3. 项目上线最后工作——布署环境
  4. server2003-多域间林之间信任配置方法详解(附图)
  5. UE4 Packaging and Cooking Games
  6. to load JavaHL Library解决方法
  7. 最近纠结致死的一个java报错java.net.SocketException: Connection reset 终于得到解决
  8. “很多人奉劝我控住分秒 恰反来我偏莽撞闯入年年岁岁”
  9. 对外汉语语料库有哪些_国内外有哪些比较好的语料库?(corpora)
  10. php7.2 eregi,php – 函数eregi()已弃用
  11. python 爬取有道词典翻译
  12. 2021会同一中高考成绩查询,2021年怀化高考状元是谁分数多少分,历年怀化高考状元名单...
  13. 邮政局计算寄往美国的国际物品快递资费
  14. css父相子绝 导航,CSS中的父相子绝布局
  15. 开源全文搜索(搜索引擎)
  16. Qt-使用QString输出数字上标(不要再用x2或x^2表示平方啦)
  17. VR全景制作的行业应用,让生活更加便捷
  18. GeoEye将向Google地球提供41厘米精度地面照片
  19. html a标签 left,offcanvas-drag-left.html手机web a标签触屏失效
  20. 哪种副业挣钱多?副业通过什么方式赚钱的呢?

热门文章

  1. Memcached CAS协议 通过版本号,防止多线程修改错误
  2. 【UIKit】键盘设计2
  3. 点对点(P2P)多线程断点续传的实现(转贴)
  4. 4.深入分布式缓存:从原理到实践 --- Ehcache 与 Guava Cache
  5. 24.事务控制和锁定语句
  6. 56. 基于 HTTP 追加协议
  7. 18.XML CDATA
  8. 17.Class Preferences
  9. 7. XSD 简易元素
  10. 《数学之美》—有限状态机和动态规划