解决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单链表实现代码实例
Nov 21 Python
Python开发常用的一些开源Package分享
Feb 14 Python
python 网络爬虫初级实现代码
Feb 27 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
May 08 Python
python实现在IDLE中输入多行的方法
Apr 19 Python
利用python对Excel中的特定数据提取并写入新表的方法
Jun 14 Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 Python
使用tensorflow实现线性回归
Sep 08 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
PyCharm2018 安装及破解方法实现步骤
Sep 09 Python
python设置随机种子实例讲解
Sep 12 Python
python中openpyxl和xlsxwriter对Excel的操作方法
Mar 01 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 生成饼图 三维饼图
2009/09/28 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
JQuery 学习笔记 element属性控制
2009/07/23 Javascript
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
浏览器常用高宽的jquery插件
2011/02/24 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
jQuery实现鼠标划过展示大图的方法
2015/03/09 Javascript
微信内置浏览器私有接口WeixinJSBridge介绍
2015/05/25 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
vue-列表下详情的展开与折叠案例
2020/07/28 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
关于angular引入ng-zorro的问题浅析
2020/09/09 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
django实现前后台交互实例
2017/08/07 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
pandas数据处理之绘图的实现
2020/06/15 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
双语教学实施方案
2014/03/23 职场文书
投标承诺书范本
2014/03/27 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
2015年管理人员工作总结
2015/05/13 职场文书