解决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 相关文章推荐
在Docker上开始部署Python应用的教程
Apr 17 Python
Python 含参构造函数实例详解
May 25 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 Python
python实现定时发送qq消息
Jan 18 Python
2019 Python最新面试题及答案16道题
Apr 11 Python
python列表推导式操作解析
Nov 26 Python
Python sys模块常用方法解析
Feb 20 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
Nov 17 Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 Python
Python爬取某拍短视频
Jun 11 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强制下载类型的实现代码
2011/04/21 PHP
php使用json-schema模块实现json校验示例
2019/09/28 PHP
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
Bootstrap框架实现广告轮播效果
2016/11/28 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
[05:37]DOTA2-DPC中国联赛 正赛 Elephant vs iG 选手采访
2021/03/11 DOTA
Python OpenCV获取视频的方法
2018/02/28 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
用python生成1000个txt文件的方法
2018/10/25 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
简单了解python PEP的一些知识
2019/07/13 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
.NET初级开发工程师面试题
2014/04/18 面试题
我未来的职业规划范文
2014/01/11 职场文书
超市端午节活动方案
2014/01/23 职场文书
感恩母亲节活动方案
2014/03/04 职场文书
市场部经理岗位职责
2014/04/10 职场文书
全国文明单位申报材料
2014/05/31 职场文书
夫妻分居协议书范本(有子女版)
2014/11/01 职场文书
个人借款协议书范本
2014/11/17 职场文书
MongoDB支持的索引类型
2022/04/11 MongoDB
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers