解决pytorch 交叉熵损失输出为负数的问题


Posted in Python onJuly 07, 2020

网络训练中,loss曲线非常奇怪

解决pytorch 交叉熵损失输出为负数的问题

交叉熵怎么会有负数。

经过排查,交叉熵不是有个负对数吗,当网络输出的概率是0-1时,正数。可当网络输出大于1的数,就有可能变成负数。

所以加上一行就行了

out1 = F.softmax(out1, dim=1)

补充知识:在pytorch框架下,训练model过程中,loss=nan问题时该怎么解决?

当我在UCF-101数据集训练alexnet时,epoch设为100,跑到三十多个epoch时,出现了loss=nan问题,当时是一脸懵逼,在查阅资料后,我通过减小学习率解决了问题,现总结一下出现这个问题的可能原因及解决方法:

1. 减小整体学习率。学习率比较大的时候,参数可能over shoot了,结果就是找不到极小值点;减小学习率可以让参数朝着极值点前进;

2. 改变网络宽度。有可能是网络后面的层参数更新异常,增加后面层的宽度试试;

3. 改变层的学习率。每个层都可以设置学习率,可以尝试减小后面层的学习率试试;

4. 数据归一化(减均值,除方差,或者加入normalization,例如BN、L2 norm等);

5. 加入gradient clipping;

6 输入数据含有脏数据,即NaN,一般当使用实际业务的真实数据时,容易出现脏数据。

以上这篇解决pytorch 交叉熵损失输出为负数的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python logging模块学习笔记
May 24 Python
详解如何使用Python编写vim插件
Nov 28 Python
Python2.7+pytesser实现简单验证码的识别方法
Dec 29 Python
使用Python从零开始撸一个区块链
Mar 14 Python
python中matplotlib条件背景颜色的实现
Sep 02 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
Python如何使用paramiko模块连接linux
Mar 18 Python
Pytorch 高效使用GPU的操作
Jun 27 Python
通过实例解析Python文件操作实现步骤
Sep 21 Python
python pillow库的基础使用教程
Jan 13 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 Python
Python时间操作之pytz模块使用详解
Jun 14 Python
Python基于httpx模块实现发送请求
Jul 07 #Python
opencv 图像腐蚀和图像膨胀的实现
Jul 07 #Python
Pytorch损失函数nn.NLLLoss2d()用法说明
Jul 07 #Python
浅析Python __name__ 是什么
Jul 07 #Python
Pytorch上下采样函数--interpolate用法
Jul 07 #Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 #Python
pytorch加载自己的图像数据集实例
Jul 07 #Python
You might like
请php正则走开
2008/03/15 PHP
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
CodeIgniter CLI模式简介
2014/06/17 PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
2014/08/20 PHP
PHP中调用SVN命令更新网站方法
2015/01/07 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
仿猪八戒网左下角的文字滚动效果
2011/10/28 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
javascript 数组操作详解
2015/01/29 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
分析JavaScript数组操作难点
2017/12/18 Javascript
JavaScript中严格判断NaN的方法
2018/02/16 Javascript
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
用python实现的可以拷贝或剪切一个文件列表中的所有文件
2009/04/30 Python
Python requests模块实例用法
2019/02/11 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
钳工实习自我鉴定
2013/09/19 职场文书
护士见习期自我鉴定
2014/02/08 职场文书
体操比赛口号
2014/06/10 职场文书
论语读书笔记
2015/06/26 职场文书
红与黑读书笔记
2015/06/29 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
《打电话》教学反思
2016/02/22 职场文书
解决golang post文件时Content-Type出现的问题
2021/05/02 Golang
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android