解决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爬虫之HTTP异常处理
Nov 05 Python
探究Python中isalnum()方法的使用
May 18 Python
Python实现将16进制字符串转化为ascii字符的方法分析
Jul 21 Python
Python调用ctypes使用C函数printf的方法
Aug 23 Python
python实现手机通讯录搜索功能
Feb 22 Python
python3使用腾讯企业邮箱发送邮件的实例
Jun 28 Python
Python求离散序列导数的示例
Jul 10 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
Oct 06 Python
Python多继承以及MRO顺序的使用
Nov 11 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
如何利用python实现列表嵌套字典取值
Jun 10 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
用来解析.htgroup文件的PHP类
2012/09/05 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
PHP7新特性
2021/03/09 PHP
HTML中Select不用Disabled实现ReadOnly的效果
2008/04/07 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
利用Node.js如何实现文件循环覆写
2019/04/05 Javascript
详解Python中的元组与逻辑运算符
2015/10/13 Python
python实现批量监控网站
2016/09/09 Python
python实现用户管理系统
2018/01/10 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
Python二维码生成识别实例详解
2019/07/16 Python
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
家庭户外服装:Hawkshead
2017/11/02 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
linux系统都有哪些运行级别
2012/04/15 面试题
大学总结自我鉴定
2014/01/18 职场文书
初三新学期计划书
2014/05/03 职场文书
保护环境倡议书范文
2014/05/13 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
高中班长竞选稿
2015/11/20 职场文书
优质护理服务心得体会
2016/01/22 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
Java使用JMeter进行高并发测试
2021/11/23 Java/Android