精华内容
下载资源
问答
  • pytorch二分类损失函数BCEWithLogitsLoss

    千次阅读 2020-05-01 16:48:24
    一个正确的语义分割二分类损失函数的计算应该是如下这样的 criterion = nn.BCEWithLogitsLoss(weight=None) masks_pred = net(imgs) loss = criterion(masks_pred, true_masks) #使用二分类交叉熵 epoch_loss += ...

    一个正确的语义分割二分类损失函数的计算应该是如下这样的

    criterion = nn.BCEWithLogitsLoss(weight=None)
    masks_pred = net(imgs)
    loss = criterion(masks_pred, true_masks) #使用二分类交叉熵
    epoch_loss += loss.item()
    

    先前在网络最后输出时使用sigmoid,然后使用BCELoss,也是正确的,这等同于使用BCEWithLogitsLoss。但是不采用网络层最后sigmoid+BCELoss的理由如下:
    原本的网络最后是没有sigmoid操作的,算交叉熵之前,二分类问题用一个sigmoid把输出值拉到[0,1],多分类问题则是用softmax。
    对二分类问题,获得网络直接输出masks_pred后使用BCEWithLogitsLoss可以针对不同问题统一使用相同的网络结构。
    另外注意一点,因为BCELoss直接计算交叉熵,所以要求输入值位于[0,1],否则报错

    展开全文
  • 二分类的监督学习中,支持向量机、逻辑斯谛回归与最大熵模型、提升方法各自使用合页损失函数、逻辑斯谛损失函数、指数损失函数,分别写为:这 3 种损失函数都是 0-1 损失函数的上界,具有相...

    在二分类的监督学习中,支持向量机、逻辑斯谛回归与最大熵模型、提升方法各自使用合页损失函数、逻辑斯谛损失函数、指数损失函数,分别写为:

    这 3 种损失函数都是 0-1 损失函数的上界,具有相似的形状。(见下图,由代码生成)

    import numpy as np
    import math
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    plt.figure(figsize=(10,8))
    x = np.linspace(start=-1, stop=2, num=1001, dtype=np.float)
    logi = np.log(1 + np.exp(-x)) / math.log(2)
    boost = np.exp(-x)
    y_01 = x < 0
    y_hinge = 1.0 - x
    y_hinge[y_hinge < 0] = 0
    
    
    plt.plot(x, y_01, 'g-', mec='k', label='(0/1损失)0/1 Loss', lw=2)
    plt.plot(x, y_hinge, 'b-', mec='k', label='(合页损失)Hinge Loss', lw=2)
    plt.plot(x, boost, 'm--', mec='k', label='(指数损失)Adaboost Loss', lw=2)
    plt.plot(x, logi, 'r-', mec='k', label='(逻辑斯谛损失)Logistic Loss', lw=2)
    plt.grid(True, ls='--')
    plt.legend(loc='upper right',fontsize=15)
    plt.xlabel('函数间隔:$yf(x)$',fontsize=20)
    plt.title('损失函数',fontsize=20)
    plt.show()
    
    往期精彩回顾
    
    
    
    
    适合初学者入门人工智能的路线及资料下载机器学习在线手册深度学习在线手册AI基础下载(pdf更新到25集)改变我人生轨迹的几个公众号
    为了转行人工智能去北美读个双硕士又如何?
    自学人工智能日记,回头看,值!
    360行,行行转AI
    35岁了,转去谷歌做人工智能靠谱吗?
    大龄程序员的一种出路,德国欢迎你
    我是老程序员,去了这里
    
    40岁的程序员跳槽去腾讯拿年薪500万,他是怎么做到的?
    
    40岁了,我该如何学编程,马化腾有话说
    
    跳槽的最佳时机
    
    为什么换工作?(面试必问问题)
    
    致转行AI的在校大学生的一封信长按扫码撩海归   觉得不错, 请随意转发,麻烦点个在看!喜欢文章,点个在看
    
    展开全文
  • 全称Binary Cross Entropy Loss,对一个batch里面的数据做二元交叉熵并且求平均,就是交叉熵应用于二分类时候的特殊形式,一般都和sigmoid一起用,表达式就是二分类交叉熵: 参数 描述 weight 给每个...

    1 nn.BCELoss()

    class torch.nn.BCELoss(weight=None, size_average=True, reduce=True)

    全称Binary Cross Entropy Loss,对一个batch里面的数据做二元交叉熵并且求平均,就是交叉熵应用于二分类时候的特殊形式,一般都和sigmoid一起用,表达式就是二分类交叉熵:

    参数描述
    weight给每个batch元素的权重,一般没用
    size_average默认为True
    reduceTrue/False 默认为True,对每个minibatch做

    注意:

    • 参数target的shape和input的shape是一样的,里面的值只能是0或者1

    • 使用前需要对target进行onehot编码

    • 神经网络输出的结果需要经过sigmoid函数

    • 对于BCELoss必须保证其输入的参数都位于0到1之间,无论是标签还是预测值,如果不想让预测值必须位于0到1之间则可以采用BCEWithLogitsLoss损失函数。

    2 torch.nn.BCEWithLogitsLoss()

    class torch.nn.BCEWithLogitsLoss(weight=None, size_average=True, reduce=True)

    与nn.BCELoss()的区别:

    该loss 层包括了 Sigmoid 层和BCELoss 层,故而神经网络的输出无需经过sigmoid函数,其他都是一样的。

     

    展开全文
  • import torch import torch.nn as nn import math entroy=nn.CrossEntropyLoss() input=torch.Tensor([[-0.7715, -0.6205,-0.2562]]) target = torch.tensor([0]) print(target) tensor([0]) output = entroy(input...
    import torch
    import torch.nn as nn
    import math
    entroy=nn.CrossEntropyLoss()
    input=torch.Tensor([[-0.7715, -0.6205,-0.2562]])
    target = torch.tensor([0])
    print(target)
    

    tensor([0])

    output = entroy(input, target)
    print(output)
    

    tensor(1.3447)
    这里target只需要给定一个值就可以了,计算的时候只有对应类别的softmax之后的值参与ln()运算,我们也可以假设target属于第2类,那么target为1,即

    target1 = torch.tensor([1])
    output1=entroy(input, target1)
    print(output1)
    

    tensor(1.1937)
    具体的过程是如何实现的呢?
    首先我们得到的input是需要进行softmax()操作,然后根据target的索引确定哪个值需要继续后续的ln()操作。(注意:这里不是log()操作
    下面介绍nn.BCELoss()方法:

    input=torch.randn(1,3)
    print(input)
    

    tensor([[ 0.0013, -0.1416, 0.1246]])

    m=nn.Sigmoid()
    input=m(input)
    print(input)
    

    tensor([[0.5003, 0.4647, 0.5311]])

    target=torch.FloatTensor([[0,1,0]])
    out=bce(input,target)
    print(out)
    

    tensor(0.7392)
    它这里的标签不是一个值,针对每一个**sigmoid()**处理过的数据都有其类别,target只能取0或者1,必须保证类别信息和输入的数据信息保持一致,这一点与nn.CrossEntroyLoss()明显不同,计算方法如下:
    bce1=0*ln(0.5003)+(1-0)ln(1-0.5003)
    bce2=1
    ln(0.4647)+(1-1)ln(1-0.4647)
    bce3=0
    ln(0.5311)+(1-0)ln(1-0.5311)
    bce=(-1)
    (bce1+bce2+bce3)/3 = 0.7392
    最后介绍nn.BCEWithLogitsLoss()方法,它与上面的nn.BCELoss()差别不大,已经把Sigmoid()集成在里面了,不需要单独定义Sigmoid()操作了

    >>> Newbce= nn.BCEWithLogitsLoss()
    >>> input=torch.randn(1,3)
    >>> input
    tensor([[-0.4616,  2.4456, -0.6359]])
    >>> target
    tensor([[0., 1., 0.]])
    >>> output=Newbce(input,target)
    >>> output
    tensor(0.3323)
    

    具体计算方法参考bce给出的公式即可

    展开全文
  • sigmoid二分类函数:将得分结果转换为概率进行分类。输入x属于任意实数值,输出范围是0到1.softmax归一化多分类函数,输入是向量,输出也是向量,每个元素值在0和1之间,且各个元素之和为1。幂函数:如果输入的数大...
  • 交叉熵损失函数原理详解

    万次阅读 多人点赞 2019-08-30 10:28:42
    之前在代码中经常看见交叉熵损失函数(CrossEntropy Loss),只知道它是分类问题中经常使用的一种损失函数,对于其内部的原理总是模模糊糊,而且一般使用交叉熵作为损失函数时,在模型的输出层总会接一个softmax函数,...
  • 机器学习中的所有算法都依赖于最小化或最大化一个函数,我们称之为损失函数(loss function),或“目标函数”、“代价函数”。损失函数是衡量预测模型在预测预期结果...损失函数大致可分为两类:分类损失和回归损失,
  • 损失函数 损失函数,又叫目标函数,是编译一个神经网络模型必须的两个参数之一。另一个必不可少的参数是优化器。 损失函数是指用于计算标签值和预测值之间差异的函数,在机器学习过程中,有多种损失函数可供选择,...
  • 常见损失函数深度剖析之二分类

    千次阅读 2020-01-25 21:10:25
    常见损失函数深度剖析之二分类 ###1.二值交叉熵 二值交叉熵是二分类问题的默认损失函数,用于目标变量满足{0,1}二值分布的二分类模型中。 交叉熵回顾——交叉熵是信息理论学里面,用来衡量两个概率分布之间的...
  • 分类问题的损失函数——用????????(????)来判断1.0 margin: ????????(????)1.1 0-1损失 (zero-one loss)1.2 Logistic loss1.3 Hinge loss回归问题的损失函数——用????−????(????)来度量 写在前面: 损失函数的...
  • pytorch学习笔记——二分类交叉熵损失函数二分类交叉熵函数 二分类交叉熵函数 binary_cross_entropy 公式: loss=−y∗log⁡(y^)−(1−y)∗log(1−y^) loss=-y\ast \log \left( \widehat {y}\right) -\left( 1-y\...
  • 假设函数 更为一般的表达式: 似然函数: 对数似然函数: 如果以上式作为目标函数,就需要最大化对数似然函数,我们这里选择最小化负的对数似然函数: 对J(w)求极小值,对求导 上述求导要用到 π(z)’ = π(z)...
  • 要建立一个模型,不可或缺的有:1、数据,2、损失函数,3、模型算法,4、优化算法。 今天我们讨论下损失函数这块。损失函数的设计,与模型最后输出的内容是有一定关联的。 对于大部分的任务(回归 or 分类),最大...
  • 常见回归和分类损失函数比较

    千次阅读 2020-03-29 21:45:45
    本博文属于阅读笔记,融合了个人观点。 1. 损失函数 损失函数的一般表示为L(y,f(x)),用以衡量真实值 y和...为了便于不同损失函数的比较,常将其表示为单变量的函数,在回归问题中这个变量为[y-f(x)] :残差表...
  • 二分类问题的评分值与损失函数

    千次阅读 2019-03-31 10:26:11
    二分类问题是监督学习中最基本的问题之一,本文旨在从评分值、损失函数的角度,对解决二分类问题的诸多机器学习算法做一个梳理。相关算法的详细介绍可以参考相关教材[1][2]。 给定一个数据集 ,其中,为d维向量 。...
  • 前言:pytorch中有几个非常容易搞混淆的函数,它们...一、二分类损失函数 1.1 从一个简单的实例说起 对于一个二分类问题,比如我们有一个样本,有两个不同的模型对他进行分类,那么它们的输出都应该是一个二维向量...
  • 损失函数作为建模的一个重要环节,一个针对模型、数据集都合适的损失函数对于建模的好坏至关重要,现查询相关资料,将常见的分类、回归损失函数及常用的 Tensorflow 代码总结于此,仅用于学习交流。
  • 值交叉熵损失函数证明

    万次阅读 2017-09-25 09:54:09
    在理解Logistic回归算法原理中我们指出了Logistic回归的损失函数定义(在这里重新约定符号): 对于单个样本而言,令为样本的期望输出,记为y;为样本的实际输出,记为y_hat,那么Logistic回归的损失函数就可以表示...
  • 损失函数

    千次阅读 2018-10-23 10:27:22
    1. 损失函数的定义 机器学习模型关于单个...损失函数大致可分为两类:分类问题的损失函数和回归问题的损失函数。在这篇文章中,我将着重介绍回归损失。 本文出现的代码和图表我们都妥妥保存在这儿了: https://n...
  • 平方损失函数与交叉熵损失函数

    万次阅读 2018-05-07 15:21:43
    对于机器学习中常见的损失函数有:平方损失函数与交叉熵损失函数。在本文中将讲述两者含义与响应的运用区别。 2. 平方损失函数 平方损失函数较为容易理解,它直接测量机器学习模型的输出与实际结果之间的距离。...
  • )其他损失函数 (三)自定义损失函数 Tensorlayer封装了很多的已经写好的代码,同时作为一个开源项目,也公布了很多的代码片段,我们这就来看看,除了tensorflow内置的四个损失函数以...
  • 二分类、多分类与多标签问题及对应损失函数的选择 之前只是了解了一些图像分类的知识,知道它大概的意思,因为笔者的研究最终也可以叫做分类,所以今天有时间来一起整理下图像分类以及对应的损失函数。开始学习~????...
  • 自定义损失函数()

    千次阅读 2019-11-29 15:33:04
    由于项目需要,尝试了用于分类的自定义损失函数; 在网上查找了很多分类相关的自定义损失函数介绍,但是很多细节,现总结如下,希望能够给大家提供帮助。如有不足,请大家帮忙指正! import warnings warnings....
  • 分类与多标签分类损失函数

    千次阅读 2020-07-28 16:00:31
    在多标签分类任务中,一般采用 sigmoid 作为输出层的激活函数,使用 binary_crossentropy(二分类交叉熵损失函数)作为损失函数,就是将最后分类层的每个输出节点使用sigmoid激活函数激活,然后对每个输出节点和对应...
  • 本文主要记录一下pytorch里面的二分类及多分类交叉熵损失函数的使用。 import torch import torch.nn as nn import torch.nn.functional as F torch.manual_seed(2020) <torch._C.Generator at 0x7f4e8b3298b0&...
  • 损失函数——交叉熵损失函数

    千次阅读 多人点赞 2019-05-06 09:38:50
    损失函数——交叉熵损失函数 摘录: https://zhuanlan.zhihu.com/p/35709485 http://jackon.me/posts/why-use-cross-entropy-error-for-loss-function/ 1.分类模型 与 Loss 函数的定义 监督学习的 2 大分支: ...
  • PyTorch里的多分类损失函数

    万次阅读 2018-09-10 14:25:55
    最近大热的PyTorch即将推出1.0版,做为各类深度学习任务的最优框架之一,PyTorch提供了丰富的损失函数,而多分类任务用到最多的就是n...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 91,490
精华内容 36,596
关键字:

二分类损失函数