细数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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
python编写分类决策树的代码
Dec 21 Python
使用python爬虫获取黄金价格的核心代码
Jun 13 Python
python如何生成网页验证码
Jul 28 Python
django模板加载静态文件的方法步骤
Mar 01 Python
如何通过python画loss曲线的方法
Jun 26 Python
pytorch的batch normalize使用详解
Jan 15 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
Mar 14 Python
深度学习小工程练习之垃圾分类详解
Apr 14 Python
PyTorch 如何自动计算梯度
May 23 Python
Python实现byte转integer
Jun 03 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
Jun 11 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
如何选购合适的收音机
2021/03/01 无线电
德劲1107的电路分析与打磨
2021/03/02 无线电
PHP动态创建Web站点的方法
2011/08/14 PHP
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
Python深入06——python的内存管理详解
2016/12/07 Python
python基于ID3思想的决策树
2018/01/03 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
苹果中国官方网站:Apple中国
2016/07/22 全球购物
高性能装备提升营地:Kammok
2019/02/27 全球购物
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
公务员的自我鉴定
2013/10/26 职场文书
单位未婚证明范本
2014/01/18 职场文书
小班评语大全
2014/05/04 职场文书
三严三实学习心得体会
2014/10/13 职场文书
个人整改措施书面材料
2014/10/24 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
介绍信如何写
2015/01/31 职场文书
2015年小学开学寄语
2015/02/27 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏