深度学习-梯度爆炸原因分析、调试记录与解决方案(loss突然变为nan)
结论:
该项目是由于脏数据造成的梯度爆炸的,剔除就好了。
文章目录
- 结论:
- 1. 程序崩溃现场
- 2. 原因分析与调试记录
- 2.1 定位错误出现位置
- 2.2 打上断点进行分析
- 2.3 debug进入损失函数运行的地方,找原因
- 2.3 处理脏数据
1. 程序崩溃现场
这里出现了,函数返回了nan,导致后边无法进行梯度更新。
2. 原因分析与调试记录
2.1 定位错误出现位置
因为提示信息不明显,所以我需要把详细的数据打印出来,让它报错,看具体哪里出错的。
(我的dataloader,数据打乱设置的False,所以数据出错的位置是不会变的)可以看到在1087处出现的错误,但打印的是i+1控制的,所以是i=1086处出现了错误。
2.2 打上断点进行分析
要是逐个再运行到1086处太慢了,于是前1085个直接continue过去,然后在第一个计算loss的位置打上断点,对主程序进行debug
2.3 debug进入损失函数运行的地方,找原因
发现,确实有一个数据不正常,area[2] = 0.0,它在损失函数中充当的是分母。
于是定位是数据处理的有问题,于是找到计算area的源数据,将其可视化出来。发现是黑乎乎一片。我在数据集里找到了那个文件,发现确实,是数据加载的有问题。
现在定位出问题是脏数据,那么数据集里很可能还有别的脏数据。接下来目标变为,处理脏数据。
2.3 处理脏数据
找到加载数据的地方,注释掉原来写的__getitem__, 因为刚才主要是mask出现了问题,那么现在只处理与mask相关的数据,其他的删掉,提高效率。area是有mask算出来的,且脏数据的特征是area为0.0,那么遇到它将数据的id打印出来。
现在找到了出问题的数据。
那么将其剔除,删除太麻烦,因为与其关联的数据可不止这3个出问题的数据。其实改变思路,遇到脏数据不加载即可。
遇到它们的id跳过即可。
现在,程序以及可以正常运行了。
深度学习-梯度爆炸原因分析、调试记录与解决方案(loss突然变为nan)相关推荐
- 【C4】基于深度学习的心电信号分析
★★★ 本文源自AI Studio社区精品项目,[点击此处]查看更多精品内容 >>> 基于深度学习的心电信号分析 一.项目背景 近年来,随着人工智能和算法的发展,以机器学习和深度学习 ...
- 免费教材丨第56期:《深度学习导论及案例分析》、《谷歌黑板报-数学之美》
小编说 离春节更近了! 本期教材 本期为大家发放的教材为:<深度学习导论及案例分析>.<谷歌黑板报-数学之美>两本书,大家可以根据自己的需要阅读哦! < ...
- 《深度学习导论及案例分析》一2.11概率图模型的推理
本节书摘来自华章出版社<深度学习导论及案例分析>一书中的第2章,第2.11节,作者李玉鑑 张婷,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.11概率图模 ...
- 基于深度学习的眼底影像分析最新综述
医学影像是深度学习取得极大成功的一个领域,而眼底图像是其中一个重要的分支.眼底图像是由单目相机捕获到的眼底的2D图像. 使用眼底图像可以用于对眼科疾病诊断分级.对病变点和重要的生物标记进行分割等等,对 ...
- RNN梯度爆炸原因和LSTM解决梯度消失解释
RNN梯度爆炸原因: 经典的RNN结构如下图所示: 假设我们的时间序列只有三段, 为给定值,神经元没有激活函数,则RNN最简单的前向传播过程如下: 假设在t=3时刻,损失函数为 . 则对于一次训练任务 ...
- 深度学习之LSTM案例分析(三)
#背景 来自GitHub上<tensorflow_cookbook>[https://github.com/nfmcclure/tensorflow_cookbook/tree/maste ...
- vue+django 微博舆情系统源码、深度学习+舆情扩散消失分析、舆情紧急等级、属地分析、按话题、情感预测、话题评论获取、提取观点、正面负面舆情、按区域检测舆情
项目背景 315又马上要到了,现在有开始对食品安全话题的关注地提升了,因此,本文系统对微博的食品安全话题进行分析,有如下的功能 1.展示当前食品安全事件相关的热点信息以及提供根据食品关键词,食品安全类 ...
- 【机器学习】梯度消失和梯度爆炸的原因分析、表现及解决方案
目录 1 基本概念 2 原因分析 2.1 直接原因 2.2 根本原因 3 表现 4 解决方案 1 基本概念 (1)梯度不稳定 在深度神经网络中的梯度是不稳定的,在靠近输入层的隐藏层中或会消失,或会爆炸 ...
- 深度学习——梯度消失、梯度爆炸
本文参考:深度学习之3--梯度爆炸与梯度消失 梯度消失和梯度爆炸的根源:深度神经网络结构.反向传播算法 目前优化神经网络的方法都是基于反向传播的思想,即根据损失函数计算的误差通过反向传播的方式,指导深 ...
- 深度学习:梯度下降算法改进
学习目标 目标 了解深度学习遇到的一些问题 知道批梯度下降与MiniBatch梯度下降的区别 知道指数加权平均的意义 知道动量梯度.RMSProp.Adam算法的公式意义 知道学习率衰减方式 知道参数 ...
最新文章
- Apache Spark源码走读之8 -- Spark on Yarn
- linux怎么打开云硬盘,Linux系统云服务器如何挂在磁盘
- hdu 5072 Coprime
- Poj_3984走迷宫(广搜)
- python函数编程训练题_Python文件与函数练习题
- Highcharts JS去除Highcharts.com链接的方法
- 盘点3个改变世界的AI项目,NLP/CV/BI,3个方向
- 工作298:无路由页面
- hive表定义(3种方式)
- 【clickhouse】clickhouse强大智能的 Projection (投影) 功能
- cmake 常见问题及解决
- secoclient免积分下载
- 深度学习GPU显卡选型攻略
- 使用DiskGenius拓展系统盘C盘的容量
- 配置Atari Gym环境
- RS雷达转Velodyne雷达数据Failed to find match for field ‘intensity‘
- Flutter开发日常练习-小猫咪杂货店(新增欢迎页,广告页和侧滑页面)
- 小麦苗Oracle和MySQL健康检查脚本使用说明
- 【小学信息技术教资面试】教案模板
- 简单辨析关系和区别:YUV、H.264、RTP、UDP、RTSP