解决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中面向对象编程的相关知识
May 25 Python
使用Python对IP进行转换的一些操作技巧小结
Nov 09 Python
python中map()与zip()操作方法
Feb 27 Python
python交互式图形编程实例(一)
Nov 17 Python
Python递归实现汉诺塔算法示例
Mar 19 Python
Sanic框架应用部署方法详解
Jul 18 Python
Python类的继承、多态及获取对象信息操作详解
Feb 28 Python
python基于paramiko将文件上传到服务器代码实现
Jul 08 Python
python3用urllib抓取贴吧邮箱和QQ实例
Mar 10 Python
python框架flask入门之环境搭建及开启调试
Jun 07 Python
python matlab库简单用法讲解
Dec 31 Python
Python中rapidjson参数校验实现
Jul 25 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框架排名
2013/07/04 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
2016/03/17 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
永不消失的title提示代码
2007/02/15 Javascript
js DOM模型操作
2009/12/28 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
javascript中Function类型详解
2015/04/28 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
实现微信小程序的wxml文件和wxss文件在webstrom的支持
2017/06/12 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
vue实现选项卡及选项卡切换效果
2018/04/24 Javascript
修改Nodejs内置的npm默认配置路径方法
2018/05/13 NodeJs
JS实现的点击按钮图片上下滚动效果示例
2019/01/28 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
js实现动态时钟
2020/03/12 Javascript
详解Python装饰器由浅入深
2016/12/09 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
2012/11/22 HTML / CSS
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
文言文形式的学生求职信
2013/12/03 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers