解决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实现二分法算法实例
Feb 02 Python
python 上下文管理器使用方法小结
Oct 10 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
Nov 21 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
基于Python对数据shape的常见操作详解
Dec 25 Python
Python Tkinter 简单登录界面的实现
Jun 14 Python
python绘制地震散点图
Jun 18 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
Sep 07 Python
python实现大量图片重命名
Mar 23 Python
基于python+selenium的二次封装的实现
Jan 06 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
python代码实现将列表中重复元素之间的内容全部滤除
May 22 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 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
微信小程序 标签传入数据
2017/05/08 Javascript
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
python http接口自动化脚本详解
2018/01/02 Python
python爬虫之自制英汉字典
2019/06/24 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
增大python字体的方法步骤
2020/07/05 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
高二学生评语大全
2014/04/25 职场文书
政府门卫岗位职责
2014/04/29 职场文书
销售员态度差检讨书
2014/10/26 职场文书
优秀校长事迹材料
2014/12/24 职场文书
法院答辩状格式
2015/05/22 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
使用python创建股票的时间序列可视化分析
2022/03/03 Python
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL
解决 redis 无法远程连接
2022/05/15 Redis