解决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之编写类之三子类
Oct 11 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
浅析Python中的join()方法的使用
May 19 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
Python下载网络小说实例代码
Feb 03 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
Nov 07 Python
Python日期时间Time模块实例详解
Apr 15 Python
django 使用全局搜索功能的实例详解
Jul 18 Python
Python Selenium参数配置方法解析
Jan 19 Python
Python全面分析系统的时域特性和频率域特性
Feb 26 Python
python自动化测试三部曲之unittest框架的实现
Oct 07 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 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
建立文件交换功能的脚本(三)
2006/10/09 PHP
div li的多行多列 无刷新分页示例代码
2013/10/16 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
PHP简单实现防止SQL注入的方法
2018/03/13 PHP
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
Bootstrap每天必学之响应式导航、轮播图
2016/04/25 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
python中if及if-else如何使用
2020/06/02 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
shallow copy和deep copy的区别
2016/05/09 面试题
本科生职业生涯规划书范文
2014/01/21 职场文书
旷课检讨书1000字
2014/02/14 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
银行委托书范本
2014/09/28 职场文书
横空出世观后感
2015/06/09 职场文书