聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

这篇具有很好参考价值的文章主要介绍了聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. nn.CrossEntropyLoss()

2. 多分类中 nn.CrossEntropyLoss() 的应用

3. 分割中 nn.CrossEntropyLoss() 的应用

3.1 测试文件

3.2 输出可视化

3.3 softmax 

3.4 log 

3.5 CrossEntropyLoss


1. nn.CrossEntropyLoss()

分类中,经常用 nn.CrossEntropyLoss() 交叉熵损失函数

y 为真实值 、 y(hat) 为预测值

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

 这种采用了 one-hot 编码的形式,多分类中,只有一个label为1

softmax 可以将数据以概率的形式输出,所以输出是在 0-1 之间,那么log 就会是负数,因此交叉熵损失函数前面有个负号。

这也是为什么多分类需要输出经过softmax

nn.CrossEntropyLoss() 已经将 softmax 封装在里面了

2. 多分类中 nn.CrossEntropyLoss() 的应用

测试需要的文件

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

demo 如下,reshape为(1,-1) 是假设batch为1的情况

分类label的 one-hot 编码需要是float类型,因为分类的label需要进行计算

1.0 * ln predict

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

 损失结果为:

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

接下来验证 nn.CrossEntropyLoss() 交叉熵损失函数

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

结果是一样的

3. 分割中 nn.CrossEntropyLoss() 的应用

一般来说,图像分割的网络输出是4维度的,对应的label 是3维的

predict : 1,2,2,2

label : 1,2,2

假设:预测结果是两个channel 的图像

  • 假如第一个channel 的左上角经过softmax 后概率是0.2
  • 假如第二个channel 的左上角经过softmax 后概率是0.8

假设第一个channel 是背景(0)的类别,第二个channel是前景(1)的类别,因此需要保证两个预测概率的和为1。

然后取最大的概率为第二个channel的0.8

所以认为这个2*2图像的左上角为前景像素点(1)的概率大

如果计算损失的话,假设label 的左上角是1的话,那么当前像素点的损失为:

L = -(0 * ln 0.2 + 1 * ln 0.8)# label 不参与计算,只是这样解释而已

最后将四个像素点同样计算后,求平均即可

3.1 测试文件

测试需要的文件

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

分割的label 是整形,因为不需要参与运算,label 的数字只是代表哪一个类别而已

测试的demo

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

3.2 输出可视化

维度的解释:输出的预测是 2 个维度的,2*2 大小的1个batch的图像

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

图像的label 是:

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

3.3 softmax 

因为 nn.CrossEntropyLoss() 是经过了 softmax 层的,预测值经过softmax后为

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

 可视化

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

3.4 log 

将概率经过log后为

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

 可视化

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

3.5 CrossEntropyLoss

把每个像素点都认为是一个分类就行了

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

左上角的预测值有两个 0.4975 和0.5025,左上角的label是1,因此取第二个0.5025

channel = 0 channel = 1 label 预测值
左上角 0.4975 0.5025 1 0.5025
左下角 0.4256 0.5744 0 0.4256
右上角 0.5050 0.4950 0 0.5050
右下角 0.8348 0.1652 1 0.1652

因此,损失为

L = - (ln 0.5025 + ln 0.4256 + ln 0.5050 + ln 0.1652) / 4 = 

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()

用 nn.CrossEntropyLoss() 计算值一样

聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()文章来源地址https://www.toymoban.com/news/detail-438444.html

到了这里,关于聊聊关于分类和分割的损失函数:nn.CrossEntropyLoss()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【pytorch损失函数(3)】nn.L1Loss()和nn.SmoothL1Loss()

    今天讨论下:对称损失函数:symmetric regression function such as L1 or L2 norm,注意说说L1 1.1 数学定义 平均绝对误差(MAE)是一种用于回归模型的损失函数。MAE 是目标变量和预测变量之间绝对差值之和,因此它衡量的是一组预测值中的平均误差大小,而不考虑它们的方向,范围为

    2024年02月06日
    浏览(51)
  • pytorch——损失函数之nn.L1Loss()和nn.SmoothL1Loss()

    今天讨论下:对称损失函数:symmetric regression function such as L1 or L2 norm,注意说说L1 1.1 数学定义 平均绝对误差(MAE)是一种用于回归模型的损失函数。MAE 是目标变量和预测变量之间绝对差值之和,因此它衡量的是一组预测值中的平均误差大小,而不考虑它们的方向,范围为

    2024年02月04日
    浏览(43)
  • torch.nn.CrossEntropyLoss()

    计算过程 nn.CrossEntropyLoss()=nn.LogSoftmax()+nn.NLLLoss()  

    2024年01月22日
    浏览(36)
  • loss = nn.CrossEntropyLoss(reduction=‘none‘)

    nn.CrossEntropyLoss() 函数是 PyTorch 中用于计算交叉熵损失的函数。 其中 reduction 参数用于 控制输出损失的形式 。 当 reduction=\\\'none\\\' 时,函数会输出一个形状为 (batch_size, num_classes) 的矩阵,表示 每个样本的每个类别的损失 。 当 reduction=\\\'sum\\\' 时,函数会对 矩阵求和 ,输出一个标量

    2024年02月14日
    浏览(35)
  • 论文推荐:基于联合损失函数的多任务肿瘤分割

    以FFANet为主干,加入分类的分支,将模型扩展为多任务图像分割框架,设计了用于分类和分割的联合损失函数。 1、FFANet和分割分支 FFANet作为骨干网络,作为对VoVNet的重新设计和优化,FFANet在骨干网中加入了残差连接,使VoVNet可以学习更多的特性。设计了一种特殊的特征融合

    2023年04月23日
    浏览(41)
  • 分类、回归常用损失函数

    交叉熵损失函数(Cross-entropy loss function) KL散度、交叉熵损失函数、nn.CrossEntropyLoss()_HealthScience的博客-CSDN博客 权重交叉熵损失函数(Weighted cross-entropy loss function) BCEWithLogitsLoss [Pytorch] BCELoss和BCEWithLogitsLoss(Sigmoid-BCELoss合成为一步)_HealthScience的博客-CSDN博客 均方差损失 Mean S

    2024年02月15日
    浏览(38)
  • 【深度学习】分类损失函数解析

    在分类任务中,我们通常使用各种损失函数来衡量模型输出与真实标签之间的差异。有时候搞不清楚用什么,下面是几种常见的分类相关损失函数及其 解析,与代码示例 。 二元交叉熵损失(Binary Cross Entropy Loss,BCELoss): torch.nn.BCELoss() 是用于二元分类的损失函数。它将模型

    2024年02月09日
    浏览(51)
  • pytorch-损失函数-分类和回归区别

    torch.nn 库和 torch.nn.functional库的区别 torch.nn 库:这个库提供了许多预定义的层,如全连接层(Linear)、卷积层(Conv2d)等,以及一些损失函数(如MSELoss、CrossEntropyLoss等)。这些层都是类,它们都继承自 nn.Module ,因此可以很方便地集成到自定义的模型中。 torch.nn 库中的层都

    2024年02月05日
    浏览(45)
  • 损失函数(Loss Function)一文详解-分类问题常见损失函数Python代码实现+计算原理解析

    目录 前言 一、损失函数概述 二、损失函数分类 1.分类问题的损失函数

    2023年04月26日
    浏览(41)
  • 神经网络中的损失函数(下)——分类任务

    上文主要介绍了回归任务中常用的几个损失函数,本文则主要介绍分类任务中的损失函数。 为了与回归任务的损失函数形式相统一,此处仅考虑某一条数据的损失函数。 在分类任务中,假设一共有 n n n 个类别。该数据的真实值 Y Y Y 一般用独热编码(只有某一位为1,其余都

    2024年01月17日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包