解决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 08 Python
在Python中处理列表之reverse()方法的使用教程
May 21 Python
Python实现批量下载图片的方法
Jul 08 Python
谈谈如何手动释放Python的内存
Dec 17 Python
python中子类调用父类函数的方法示例
Aug 18 Python
python实现word 2007文档转换为pdf文件
Mar 15 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
May 05 Python
自定义django admin model表单提交的例子
Aug 23 Python
python 图片二值化处理(处理后为纯黑白的图片)
Nov 01 Python
python:批量统计xml中各类目标的数量案例
Mar 10 Python
浅谈Python爬虫原理与数据抓取
Jul 21 Python
基于python制作简易版学生信息管理系统
Apr 20 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 mkdir()定义和用法
2009/01/14 PHP
PHP 加密解密内部算法
2010/04/22 PHP
PHP面向对象分析设计的61条军规小结
2010/07/17 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
PHP实现文件下载断点续传详解
2014/10/15 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
async/await让异步操作同步执行的方法详解
2019/11/01 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
python:接口间数据传递与调用方法
2018/12/17 Python
Python requests模块实例用法
2019/02/11 Python
python求绝对值的三种方法小结
2019/12/04 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
物业经理求职自我评价
2013/09/22 职场文书
企业演讲稿范文
2013/12/28 职场文书
办理信用卡工作证明
2014/01/11 职场文书
法人委托书范本格式
2014/09/15 职场文书
学生个人评语大全
2015/01/04 职场文书
学生会任命书范本
2015/09/21 职场文书
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技