Pyroch损失函数之BCELoss

2023-11-03

这也是最近在做的一个模型中的损失函数,所有就一探究竟了解一下这个函数。首先它是一个二分类损失函数。可以是单标签的损失函数也可是多标签的损失函数。

1、单标签

这个图像是不是猫:1代表是,0代表不是。这就是单标签的二分类问题。 

2、多标签

狗狗和猫咪能和睦相处吗?研究发现:猫狗能否共处,取决于猫咪_腾讯新闻

和单标签一样,不过这个是多标签而已,所以它的label就是[1,1]。第一列代表有没有狗,第二列代表有没有猫。所以也称之为二进制交叉熵。

3、BCELoos损失函数

class torch.nn.BCELoss(weight: Optional[torch.Tensor] = None, size_average=None, reduce=None, reduction: str = 'mean')
  •  weight:可以初始化一个权重矩阵
  • size_average:默认是True,表示对求出的loss进行求平均数。比如一个多标签的图像,三个标签求出的loss默认是求平均
  • reduction:默认是求和。对于一个batch_size的loss求平均数
  • Loss(预测的label必须先进行sigmod然后在放到loss里面去求和), 0<=target[i]<=1
    • m = nn.Sigmoid()

    • loss = nn.BCELoss()

    • output = loss(m(input), target)

假设我们有一个3*3的输入,也就是batch_size是3,有3个标签。然后我们的target也是3*3。现在用这个例子做一个演示:

import torch
import torch.nn as nn

m = nn.Sigmoid()
loss = nn.BCELoss()
input = torch.randn((3,3), requires_grad=True)
target = torch.empty(3,3).random_(2)
output = loss(m(input), target)
input: tensor([[-0.5288,  0.3353,  1.6142],
        [-0.7940,  1.5699, -0.1642],
        [ 0.1262, -0.6596, -1.4198]], requires_grad=True)
sigmod: tensor([[0.3708, 0.5830, 0.8340],
        [0.3113, 0.8278, 0.4590],
        [0.5315, 0.3408, 0.1947]], grad_fn=<SigmoidBackward>)
target: tensor([[1., 0., 0.],
        [0., 1., 1.],
        [1., 1., 0.]])
output: tensor(0.7698, grad_fn=<BinaryCrossEntropyBackward>)

 

总结:我们可以看出来,把输入的数据先进行sigmod,然后再计算loss。还有一个损失函数BCEWithLogitsLoss()。它将sigmod集成到一块了。因此如果不想用sigmod直接用这个处理就可以了。而且使用这个损失函数还不会造成梯度消失问题。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pyroch损失函数之BCELoss 的相关文章

随机推荐

  • android-studio undefined reference to `__android_log_print

    最近在使用android studio编译安卓程序 要用到jni 我在jni源码中引用了 android log print 且在Android mk中加了LOCAL LDLIBS llog 但是编译时还是会出现如下错误 Error 82
  • PHP 实现抽奖功能

    1 场景 商品抽奖 用户参与抽奖后 分享页面给新用户 并且新用户也参与抽奖 然后为上个用户增加一次抽奖码 2 问题 用户获得的抽奖码机会只为了增加自己的中奖概率 一次活动的产品一个用户只 能中一次 public function index
  • 00天精通Python(基础篇)——第10天:字符串格式化

    文章目录 python中常用的数据类型占位 示例 示例代码 python中常用的数据类型占位 示例 占位符 变量 占位符 s d f 我们可以通过如下语法 完成字符串和变量的拼接 示例代码 name 科比 time 2006 score 8
  • getCurrentInstance

    https blog csdn net m0 46318298 article details 130726043 注 是在vue中所有实例中都可用的一个简单约定 这样做会避免和已被定义的数据 方法 计算属性产生冲突
  • ‘pip’不是内部或外部命令---Python+OpenCV配置过程中常见问题

    1 用pip进行安装时 输入pip命令会提示 pip 不是内部或外部命令 在python安装目录中找得到script文件夹 查看文件夹内部是否存在pip3 exe这个文件 下面以我的电脑为例 如果没有 在命令行输入 python m ens
  • stream, parser, 文法的一些概念

    stream就是个Iterable
  • leaftlet入门教程一

    1 实时输出坐标 监听 mousemove 事件 map on mousemove e gt let latlng e latlng console log latlng lat 30 59 lng 114 32 取消 mousemove
  • 全球及中国废钢市场发展机遇与十四五运行潜力调研报告2022版

    全球及中国废钢市场发展机遇与十四五运行潜力调研报告2022版 修订日期 2021年11月 搜索鸿晟信合研究院查看官网更多内容 第一章 废钢相关概述 1 1 废钢基本概念 1 1 1 废钢的定义 1 1 2 废钢的来源 1 1 3 废钢的分类
  • 开源进展

    作为连接实体对象 人或物 的现实身份与链上身份的可信映射 实现实体对象之间安全可信的数据授权与交换 分布式身份技术解决方案在推动区块链应用繁荣及可信数据流转的过程中扮演着重要角色 WeIdentity是由微众银行自主研发并完全开源的一套分布
  • Failed to execute ‘pushState‘ on ‘History‘: function nextWeek(now)......

    我在使用react跳转页面传参数时 报了上述错误 具体代码为 原因 saveData里面存在函数 我在传值的时候 参数里面有时间格式的数据 里面包含函数 所以不能跳转 需要把时间格式的数据转换成字符串或其他形式 我转换成了YYYY MM D
  • C++基础-基础数据类型

    目录 类型简介 整型 整型类型宽度 整型类型取值范围 如何选择适合的整型 整型字面量 整型字面量的表示形式 如何确定整型字面量的类型 本节了解即可 char类型 char类型的符号 字符字面量 bool类型 浮点类型 浮点数内部存储方式简介
  • 干货分享

    在企业数字化转型的过程中 尤其随着互联网 云计算 大数据等信息技术与通信技术的迅猛发展 海量数据在各种信息系统上被存储和处理 其中包含大量有价值的敏感数据 这意味着数据泄露的风险也不断增加 数据泄露可能由各种因素引起 包括恶意攻击 黑客入侵
  • Android RecycleView列表使用GridLayoutManager 均分子项Item,且左右宽度相同

    1 需求描述 列表分为一列两个 两个子项宽度一致 且左右边距一样 就是要好看 子项宽度适配手机 高度适配宽度 2 问题描述 但是我们直接设置的时候 他的子项会在给他的布局的左边 于是我想到了设置下子项的左右边距 但是android手机屏幕太
  • realtek

    https download csdn net download haoTaoshu 12770808 ops request misc 257B 2522request 255Fid 2522 253A 25221687097687168
  • adb shell 内存参数详解

    摘自https www cnblogs com zl1991 p 6644998 html 感谢原创作者 1 adb shell procrank PID Vss Rss Pss Uss cmdline 32657 2254196K 372
  • NDK 入门HelloJni 以及 javah 找不到类文件的问题 解决(ubuntu)

    1 首先创建一个android工程 创建一个HelloJni java 文件 并编写如下代码 package com ndk import android app Activity import android os Bundle impo
  • 几种经典的卷积神经网络模型

    目录 1 卷积神经网络解决的问题 2 经典的卷积神经网络 2 1 LeNet 2 2 AlexNet 2 3 VGG 2 3 1 VGG块 2 3 2 VGG网络 2 4 NiN 2 4 1 Nin块 2 4 2 Nin网络 2 5 Goo
  • java语句的执行结构

    class R1 static System out println 1 public static void main String args System out println 2 new Child class Parent sta
  • Js保留小数点

  • Pyroch损失函数之BCELoss

    这也是最近在做的一个模型中的损失函数 所有就一探究竟了解一下这个函数 首先它是一个二分类损失函数 可以是单标签的损失函数也可是多标签的损失函数 1 单标签 这个图像是不是猫 1代表是 0代表不是 这就是单标签的二分类问题 2 多标签 和单标