细数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中设置变量作为默认值时容易遇到的错误
Apr 03 Python
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 Python
Python/ArcPy遍历指定目录中的MDB文件方法
Oct 27 Python
python修改txt文件中的某一项方法
Dec 29 Python
Python3实现的判断回文链表算法示例
Mar 08 Python
python实现扫描局域网指定网段ip的方法
Apr 16 Python
Tensorflow累加的实现案例
Feb 05 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
详解Django配置JWT认证方式
May 09 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 Python
python pyhs2 的安装操作
Apr 07 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 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
使用PHP制作新闻系统的思路
2006/10/09 PHP
smtp邮件发送一例
2006/10/09 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
AngularJS入门之动画
2016/07/27 Javascript
JS作用域链详解
2017/06/26 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
2018/03/06 Javascript
详解Vue SPA项目优化小记
2018/07/03 Javascript
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
生产现场工艺工程师岗位职责
2013/11/28 职场文书
《狼》教学反思
2014/03/02 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
银行先进个人事迹材料
2014/05/11 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
详解python字符串驻留技术
2021/05/21 Python
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS
我的收音机情缘
2022/04/05 无线电