细数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中readline判断文件读取结束的方法
Nov 08 Python
python中类变量与成员变量的使用注意点总结
Apr 29 Python
Python 获取当前所在目录的方法详解
Aug 02 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
Python运维开发之psutil库的使用详解
Oct 18 Python
在PyCharm中三步完成PyPy解释器的配置的方法
Oct 29 Python
python中update的基本使用方法详解
Jul 17 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
pytorch GAN生成对抗网络实例
Jan 10 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
python定时截屏实现
Nov 02 Python
python如何用matplotlib创建三维图表
Jan 26 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
在html文件中也可以执行php语句的方法
2015/04/09 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
Webkit的跨域安全问题说明
2011/09/13 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
python中base64加密解密方法实例分析
2015/05/16 Python
python使用pymysql实现操作mysql
2016/09/13 Python
通过Python实现自动填写调查问卷
2017/09/06 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
python实现自动发送邮件
2018/06/20 Python
python中有关时间日期格式转换问题
2019/12/25 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
英国网上购买门:Direct Doors
2018/06/07 全球购物
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
计算机个人求职信范例
2014/01/24 职场文书
服装设计专业求职信
2014/06/16 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
后备干部推荐材料
2014/12/24 职场文书
董事长秘书岗位职责
2015/02/13 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技