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

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

1. 使用nn.BCELoss需要在该层前面加上Sigmoid函数。
公式如下:
loss(Xi,yi)=−wi[yilogxi+(1−yi)log(1−xi)]loss(X_{i},y_{i}) = -w_{i}[y_{i}logx_{i} + (1-y_{i})log(1-x_{i})]loss(Xi​,yi​)=−wi​[yi​logxi​+(1−yi​)log(1−xi​)]
2. 使用nn.CrossEntropyLoss会自动加上Sofrmax层。
公式如下:
loss(Xi,yi)=−wlabellogexlabel∑j=1Nexjloss(X_{i},y_{i}) = -w_{label}log\frac{e^{x_{label}}}{\sum_{j=1}^{N}e^{x_{j}}}loss(Xi​,yi​)=−wlabel​log∑j=1N​exj​exlabel​​

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

nn.BCELoss与nn.CrossEntropyLoss的区别相关推荐

  1. nn.BCELoss和nn.CrossEntropyloss

    nn.BCELoss和nn.CrossEntropyloss总结 nn.BCEloss 公式如下: 1.输入的X 代表模型的最后输出 y 代表你的label 我们的目的就是为了让模型去更好的学习lab ...

  2. 对于pytorch中nn.CrossEntropyLoss()与nn.BCELoss()的理解和使用

    在pytorch中nn.CrossEntropyLoss()为交叉熵损失函数,用于解决多分类问题,也可用于解决二分类问题. BCELoss是Binary CrossEntropyLoss的缩写,nn. ...

  3. 深刻剖析与实战BCELoss详解(主)和BCEWithLogitsLoss(次)以及与普通CrossEntropyLoss的区别(次)

    文章目录 前言 BCELoss原理 BCELoss实操 二分类情况 多分类情况 CrossEntropyLoss BCEWithLogitsLoss 前言 import torch import to ...

  4. Pytorch踩坑记之交叉熵(nn.CrossEntropy,nn.NLLLoss,nn.BCELoss的区别和使用)

    目录 nn.Softmax和nn.LogSoftmax nn.NLLLoss nn.CrossEntropy nn.BCELoss 总结 在Pytorch中的交叉熵函数的血泪史要从nn.CrossEn ...

  5. torch.nn.BCELoss

    import torch import torch.nn as nn a = torch.tensor([0.1,0.3,0.6]) b = torch.tensor([0,0,1]) loss = ...

  6. BCEloss和CrossEntropyLoss的区别

    1. BCEloss pytorch官方提供的公式: l ( x , y ) = { l 1 , l 2 , - , l n } T , l(x,y) = \{l_1,l_2,\dots,l_n\}^ ...

  7. torch.nn.BCELoss用法

    1. 定义 数学公式为Loss = -w * [p * log(q) + (1-p) * log(1-q)],其中p.q分别为理论标签.实际预测值,w为权重.这里的log对应数学上的ln. PyTor ...

  8. torch.nn.BCELoss are unsafe to autocast

    torch.nn.BCELoss are unsafe to autocast 默认初始loss: lobj = torch.zeros(1, device=device) 临时解决方法: bce_l ...

  9. 小白学GAN系列2——nn.ReLU与nn.LeakyReLU的区别

    nn.ReLU与nn.LeakyReLU的区别 因为之前从未接触过这方面,直接接手GAN,有点吃力,如有明显漏洞,请指正,我会感激不尽. 昨晚查阅了ReLU的含义,结果今天发现高老师给的代码中又有一个 ...

最新文章

  1. mouted能不能访问data中的数据_Vue(定时器)解决mounted不能获取到data中的数据问题...
  2. C#线程系列讲座(3):线程池和文件下载服务器
  3. 红米电流电压测试软件,你也是27W家族?Redmi K20 Pro充电测试
  4. ORA-20204 错误
  5. 二叉树的后序遍历—leetcode145
  6. ES6 开发常用新特性以及简述ES7
  7. Linux文件服务器实战(系统用户)
  8. tomcat的wget链接_Linux(jdk安装tomcat安装nginx安装gcc/wget)
  9. 如何在android studio中设置sdk path?
  10. 全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<监听器篇>
  11. Linux彻底删除mysql
  12. Django - 路由系统
  13. pythondifflib详解_python difflib模块示例讲解
  14. idea拉出Output窗口和还原窗口
  15. 内存碎片产生原因及解决办法
  16. 卸载软件时,出现解压缩支持文件时出错,灾难性故障--转载
  17. 可控硅的基本工作原理及应用
  18. msxml4.0 sp4_MSXML4和80072efd中的安全性
  19. C++在一个类中定义另一个有参数构造函数的类的对象
  20. 人工智能原理(书籍推荐)

热门文章

  1. 【重复制造精讲】REM Pull List 拉料单简介
  2. 反查BOM, 找出它的上阶
  3. 浅谈移动类型102、122和161区别
  4. SAP销项税多科目配置
  5. 华为SAP解决方案为海澜之家带来新的科技创新
  6. 在SAP中进行黏贴时必须要把之前的数据删掉后才能黏贴,不能直接使用黏贴来覆盖之前的数据,这个怎麼解?
  7. SAP系统硬件解决方案
  8. ABAP源码--当前及可用库存查询
  9. 如何用CS07进行BOM工厂分配
  10. 为什么你的记忆总会越来越模糊?