细数nn.BCELoss与nn.CrossEntropyLoss的区别


Posted in Python onFebruary 29, 2020

以前我浏览博客的时候记得别人说过,BCELoss与CrossEntropyLoss都是用于分类问题。可以知道,BCELoss是Binary CrossEntropyLoss的缩写,BCELoss CrossEntropyLoss的一个特例,只用于二分类问题,而CrossEntropyLoss可以用于二分类,也可以用于多分类。

不过我重新查阅了一下资料,发现同样是处理二分类问题,BCELoss与CrossEntropyLoss是不同的。下面我详细讲一下哪里不同。

1、使用nn.BCELoss需要在该层前面加上Sigmoid函数。

公式如下:

细数nn.BCELoss与nn.CrossEntropyLoss的区别

2、使用nn.CrossEntropyLoss会自动加上Sofrmax层。

公式如下:

细数nn.BCELoss与nn.CrossEntropyLoss的区别

可以看出,这两个计算损失的函数使用的激活函数不同,故而最后的计算公式不同。

补充拓展:pytorch的BCELoss和cross entropy

BCELoss:

torch.nn.BCELoss:

Input: (N, *)(N,∗) where *∗ means, any number of additional dimensions

Target: (N, *)(N,∗), same shape as the input

Output: scalar. If reduction is 'none', then (N, *)(N,∗), same shape as input.

这里的输入和target 目标必须形状一致,并且都是浮点数,二分类中一般用sigmoid的把输出挑出一个数:

>>> m = nn.Sigmoid()
>>> loss = nn.BCELoss()
>>> input = torch.randn(3, requires_grad=True)
>>> target = torch.empty(3).random_(2)
>>> output = loss(m(input), target)
>>> output.backward()

CrossEntropyLoss:

input(N,C) #n 是batch c是类别
target(N)

输入和target 形状是不同的crossEntropy 是自己会做softmax

>>> loss = nn.CrossEntropyLoss()
>>> input = torch.randn(3, 5, requires_grad=True)
>>> target = torch.empty(3, dtype=torch.long).random_(5)
>>> output = loss(input, target)
>>> output.backward()

以上这篇细数nn.BCELoss与nn.CrossEntropyLoss的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python编程中time模块的使用
Nov 20 Python
使用PyV8在Python爬虫中执行js代码
Feb 16 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 Python
python并发和异步编程实例
Nov 15 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 Python
windows下numpy下载与安装图文教程
Apr 02 Python
python 求1-100之间的奇数或者偶数之和的实例
Jun 11 Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
详解python3类型注释annotations实用案例
Jan 20 Python
Python+Appium自动化测试的实战
Jun 30 Python
Pytorch对Himmelblau函数的优化详解
Feb 29 #Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 #Python
在pytorch中实现只让指定变量向后传播梯度
Feb 29 #Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
Feb 29 #Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 #Python
python实现门限回归方式
Feb 29 #Python
Python3.9又更新了:dict内置新功能
Feb 28 #Python
You might like
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
js继承 Base类的源码解析
2008/12/30 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
浅述Javascript的外部对象
2016/12/07 Javascript
JS实现搜索关键词的智能提示功能
2017/07/07 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
Vue的props父传子的示例代码
2020/05/20 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
python实现requests发送/上传多个文件的示例
2018/06/04 Python
Python 修改列表中的元素方法
2018/06/26 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
Python制作词云图代码实例
2019/09/09 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
英国当代时尚和街头服饰店:18montrose
2018/12/15 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
应届生财务会计求职信
2013/11/05 职场文书
《明天,我们毕业》教学反思
2014/04/24 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
飞屋环游记观后感
2015/06/08 职场文书
爱国电影观后感
2015/06/19 职场文书
物业保洁员管理制度
2015/08/05 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书