Pytorch 手工复现交叉熵损失(Cross Entropy Loss)

torch自己实现交叉熵损失函数 torch自己实现交叉熵损失函数torch实现交叉熵 torch实现交叉熵 import torch import torch.nn as nn import torch.nn.functional as F class Loss(torch.nn.Module): def __init__(self, reduction='mean'): super(Loss, self).__init__() self.reduction = reduction def 阅读详情

如果直接调包的话很简单,例子如下:

import torch
import torch.nn as nn

torch.manual_seed(1234)
ce_loss = nn.CrossEntropyLoss()
x_input = torch.randn(3,3)
y_target = torch.tensor([1,2,0])
print(ce_loss(x_input, y_target))

这里的x_input可以理解为我们的网络预测结果,而y_target为真值,此处例子的结果是0.8526。那么自己做的话,考虑交叉熵的公式如下:L=1N∑iLi=−1N∑i∑c=1Myiclog⁡(pic) L=\frac{1}{N} \sum_{i} L_{i}=-\frac{1}{N} \sum_{i} \sum_{c=1}^{M} y_{i c} \log \left(p_{i c}\right) L=N1​i∑​Li​=−N1​i∑​c=1∑M​yic​log(pic​) 其中MMM为总类别数,yicy_{ic}yic​为符号函数(只能为0或1),picp_{ic}pic​为预测得到的概率(即此处的网络预测结果x_input)。

首先为了方便"矩阵运算",我们将y给展平为列向量的形式:

y_target = y_target.view(-1, 1)

对于x,将其做softmax压缩至0-1范围内后再进行log运算:

x_input = F.log_softmax(x_input, 1)

接着,利用pytorch的gather函数,找到各标签y所对应的x:

x_input.gather(1, y_target)

这一步是相对最难理解的。回到公式,考虑到我们已经算完了log⁡(pic)\log (p_{i c})log(pic​),现在要做的也就是找到x_input中各行所对应的独热的值。例如,这里y_target为:

tensor([[1],
        [2],
        [0]])

意思就是对于x的第一行,取第1个值;对于x的第二行,取第2个值;对于x的第三行,取第0个值。因为x为:

tensor([[-1.0207, -0.6645, -2.0784],
        [-1.0184, -1.8474, -0.7315],
        [-1.1617, -0.6996, -1.6595]])

因此取到的结果为:

tensor([[-0.6645],
        [-0.7315],
        [-1.1617]])

这一过程恰好是可以通过torch中的gather方法解决的。

最后求均值得到最终结果:

res = -1 * res
print(res.mean())

可以发现结果也为0.8526,完整代码如下:

import torch
import torch.nn.functional as F

torch.manual_seed(1234)
x_input = torch.randn(3,3)
y_target = torch.tensor([1,2,0])
y_target = y_target.view(-1, 1)
x_input = F.log_softmax(x_input, 1)
res = x_input.gather(1, y_target)
res = -1 * res
print(res.mean())

参考:
https://zhuanlan.zhihu.com/p/98785902
https://www.jianshu.com/p/0c159cdd9c50

机器学习--- 交叉熵损失(CrossEntropy Loss)--(附代码) 文章目录 阅读详情

相关推荐

【损失函数】Cross Entropy Loss 交叉熵损失

对于分类问题,最常用的损失函数是交叉熵损失函数 Cross Entropy Loss。它用于测量两个概率分布之间的差异,通常用于评估分类模型的性能。

Next_SummerAgain的博客 1320

使用Pytorch实现自定义的交叉熵损失函数,对手写数字数据集进行分类

直接替换交叉熵损失函数即可loss_fn = CustomCrossEntropyLoss() # 创建损失函数 learn_rate = 1e-2 # 学习率。

weixin_43960370的博客 1323

pytorch 交叉熵损失函数 忽略标签

pytorch 交叉熵损失函数

jacke121的专栏 2761

【AI数学】交叉熵损失函数CrossEntropy

交叉熵损失(CrossEntropyLoss)函数是分类任务里最常见的损失函数。当然,CrossEntropy(以下简称“CE”)的作用不仅仅是在简单的分类任务里,比如最近大火的图文多模态模型CLIP就用到CE来进行对比学习,稍微改造一下变成Symmetrical Cross Entropy。交叉熵不具有对称性,所以交换变量位置,会导致数值不同。所以,在使用Pytorch内置交叉熵损失函数时,记得注意顺序:(label记得放在后面) 简单来说,交叉熵可以用来描述两个分布的差别。先看公式, CrossEntr

木盏 3840

SpaceMesh Mining 教程

當參與Spacemesh的用戶在完成P盤工作後需要完成兩個部分工作:PoET+PoST,這兩部分均是在不同的規定時間完成,具體可參考後續的時間表。註意!只有PoET和PoST均完成的用戶才可以獲得收益。Spacemesh相關P盤教程:說明:1.Spacemesh每個紀元epoch周期為14天,在8月7日完成PoET的將在8月20日完成PoST,收益將在8月25日後發放(之後用戶收益將每隔14天發放一次) 後續PoET時間為8月7日+N14 **後續PoST時間為8月20日+N。

Yc Chan 的个人博客 1040

实战演练:用wvp-GB28181-pro + ZLMediaKit搭建一个可用的国标视频监控测试环境(附设备模拟器对接)

本文详细介绍了如何使用wvp-GB28181-pro和ZLMediaKit在Ubuntu系统上搭建GB28181视频监控测试环境。从环境准备、组件解析到核心服务部署与设备模拟器对接,提供完整的实战指南,帮助开发者快速构建可验证的监控系统。

weixin_42692935的博客 578

交叉熵损失函数(Cross-Entropy Loss)

交叉熵损失函数是深度学习中分类问题常用的损失函数,特别适用于多分类问题。它通过度量预测分布与真实分布之间的差异,来衡量模型输出的准确性。中,softmax 和交叉熵是结合在一起实现的,因此你不需要手动调用 softmax。用于度量预测分布与真实分布之间的差异,是分类问题中的核心工具。结合 softmax,用来计算预测分布与真实分布之间的差异。结合了 softmax 和交叉熵计算,使用简单且高效。模型通常输出logits(未归一化的分数),例如。4、示例:在神经网络中的应用。在 PyTorch 的。

qq_39437730的博客 4万+

神州数码防火墙(DCN)NAT SSL-VPN配置

SSL-VPN是基于应用层的VPN,采用SSL协议来实现远程接入的一种新型VPN技术,比L2TP更加灵活的VPN方案。是天然的安全远程接入方案。用户可以通过浏览器的HTTPSs登录VPN的网址。SSL-VPN的认证方式包括LDAP,radius,CA,USB Key等方式。 SSL VPN的主要应用场景是保证远程用户能够在企业外部安全\高效的访问企业内部的网络资源

qq_50966485的博客 4536

交叉熵损失函数(cross-entropy loss function)原理及Pytorch代码简介

为了更好的理解交叉熵的意义,先介绍一下相对熵的概念 1、相对熵 基本概念 相对熵又称为KL散度(Kullback–Leibler divergence),用来描述两个概率分布的差异性。假设有对同一变量xxx的q(x)q(x)q(x)和p(x)p(x)p(x)两个概率分布,那么两者之间的相对熵可由以下定义: DKL(p∥q)=∑i=1Np(xi)log⁡(p(xi)q(xi)) D_{K L...

chao_shine的博客 14万+

【RT-DETR有效改进】利用EMAttention加深网络深度提高模型特征提取能力(特征选择模块)

本文给大家带来的改进机制是EMAttention注意力机制,它的核心思想是,重塑部分通道到批次维度,并将通道维度分组为多个子特征,以保留每个通道的信息并减少计算开销。EMA模块通过编码全局信息来重新校准每个并行分支中的通道权重,并通过跨维度交互来捕获像素级别的关系。本文改进是基于ResNet18、ResNet34、ResNet50、ResNet101,文章中均以提供,本专栏的改进内容全网独一份深度改进RT-DETR非那种无效Neck部分改进,

Snu77的博客 3163

天地图下载带审图号(审图号: GS(2024)0650号)的 “行政区划” 数据(含shp文件下载地址)

在科研投稿论文过程中,多数期刊杂志要求我们制作涉及国界的图件,必须使用自然资源部地图技术审查中心发布的标准地图底图。如地理学报、地理科学等期刊的投稿指南中写到:非标准底图本刊不予发表!(如图1.1所示)如果一定要用,凡涉国界图件(国内部分地区、全国、世界部分地区、全球)必须使用自然资源部标准地图服务系统标准地图底图(http://bzdt.ch.mnr.gov.cn/)(如图1.1所示)或国家测绘局地理信息局标准地图底图(如图1.2所示),所用底图边界要完全无修改(包括南海诸岛位置)。

JData_Engineer的博客 2297

损失函数——交叉熵损失(Cross-entropy loss)

对于每个类别i,yi​表示真实标签x属于第i个类别的概率,y^​i​表示模型预测x属于第i个类别的概率。对于每个输入数据x,我们定义一个C维的向量y^​,其中y^​i​表示x属于第i个类别的概率。假设真实标签y是一个C维的向量,其中只有一个元素为1,其余元素为0,表示x属于第k个类别。该函数将输入数据视为模型输出的概率分布,将目标标签视为类别索引,并计算这些概率与实际标签之间的交叉熵损失。其中,xi​表示真实标签的第i个元素,y​i​表示模型预测x属于第i个类别的概率。清空梯度,计算模型输出和损失,使用。

weixin_50752408的博客 2万+

PCB仿真软件:Altium Designer_(18).PCB设计中的热管理

在PCB设计中,热管理是一个至关重要的环节。随着电子设备的集成度越来越高,功耗和发热量也随之增加,不合理的热设计可能导致电路板过热,从而影响电路的性能和可靠性。热管理不仅能够提高电路板的使用寿命,还能确保电路在各种环境条件下的稳定工作。本节将详细介绍如何在Altium Designer中进行有效的热管理,包括热分析、热设计和热仿真等关键步骤。

kkchenjj的博客 1973

Pytorch - Cross Entropy Loss

Pytorch - Cross Entropy Loss Pytorch 提供的交叉熵相关的函数有: torch.nn.CrossEntropyLoss torch.nn.KLDivLoss torch.nn.BCELoss torch.nn.BCEWithLogitsLoss torch.nn.MultiLabelSoftMarginLoss ​ 1. CrossEntropyLos...

长风破浪会有时,直挂云帆济沧海 6万+

YOLOv11改进策略【Neck】| SEAM:分离和增强注意模块,解决复杂场景下的小目标遮挡问题

本文记录的是利用 SEAM 模块优化 YOLOv11 的目标检测网络模型。的设计出发点在于解决复杂场景下的人脸遮挡问题,相当于是小目标被其他物体部分遮挡时,传统方法因特征缺失导致检测精度下降的问题。该模块通过增强未遮挡区域的特征响应并补偿被遮挡区域的信息损失,提升模型对遮挡小目标的检测能力。YOLO-FaceV2: A Scale and Occlusion Aware Face DetectorSEAM模块(Separated and Enhancement Attention Module)的设计出发点

Limiiiing的博客 2274

【ComfyUI】Wan2.2 动态服饰描述驱动换装图生视频

本文介绍了一个基于ComfyUI的Wan2.2动态服饰描述驱动换装工作流,能通过自然语言描述实现人物图像的自动换装并生成动态视频。该工作流结合多模态输入、语言模型驱动生成和视频合成技术,包含图像加载、文本解析(使用Qwen2.5大模型)、潜变量编码、视频帧采样与插值(RIFE VFI)等核心模块,最终通过VHS_VideoCombine输出流畅换装视频。整个流程无需手动干预,支持从"哥特风格"到"未来装甲"等多样化服饰风格的精确转换,通过文本节点控制50-100

Mr数据杨 2560

交叉熵损失(Cross Entropy Loss)学习笔记

交叉熵损失(Cross Entropy Loss)学习笔记

zly_Always_be的博客 6893

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

pytorch的F.cross_entropy交叉熵函数

F.cross_entropy计算交叉熵损失,代码为: loss=F.cross_entropy(out, y) 其中out是网络输出的概率向量,y是真实标签,注意y是标量。使用这个函数时应该特别注意out是没有经过softmax处理过的。因为调用F.cross_entropy函数时会通过log_softmax和nll_loss来计算损失,也就是说使用F.cross_entropy函数时,程...

Mr.horse的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pytorch 里的log_softmax, nll_loss, cross_entropy

import torch.nn.functional as F 常用的函数有: log_softmax,nll_loss, cross_entropy 1.log_softmax, 就是log和softmax合并在一起执行 2. nll_loss ,函数全称是negative log likelihood loss, 函数表达式为 例如:假设x=[1,2,3], class=2...

shuijinghua的博客 1万+

PyTorch-Segmentation-Detection损失函数深度解析:Dice Loss、Cross Entropy与Focal Loss

PyTorch-Segmentation-Detection是一个强大的图像分割和物体检测库,它提供了完整的深度学习解决方案。在这个项目中,损失函数的选择和实现对于模型训练的成功至关重要。本文将深入解析项目中使用的三种核心损失函数:Dice Loss、Cross Entropy Loss和Focal Loss,帮助您理解它们的工作原理、适用场景和实际应用方法。 ## 🔍 损失函数在图像分割中的

gitblog_00182的博客 842

F.cross_entropy、logsoftmax、nll_loss详解

F.cross_enropy的实际计算方法探索

weixin_40198079的博客 5397

pytorch中交叉熵损失函数的细节

1. 一般分类任务实现:二分类 在二分类中,pytorch主要可以应用的损失函数分为以下四个: F.cross_entropy()与torch.nn.CrossEntropyLoss() F.binary_cross_entropy()与torch.nn.BCELoss() 之所以将四个函数分成两类,是因为: 前者输入是非onehot label + logit,函数会自动将logit通过softmax映射为概率 后者输入的是onehot label + prob(概率,一般是经过softmax后

Mr_health的博客 8107

​​从理论到实践:深入理解二分类交叉熵损失函数 (Binary Cross-Entropy Loss)​​

深度学习中的损失函数是模型优化的核心导航仪,交叉熵损失因其在分类任务中的卓越表现成为关键工具。本文从优化问题本质出发,探讨了回归任务中SSE/MSE的局限性,重点解析了二分类交叉熵损失的推导过程。通过极大似然估计视角,展示了如何从概率建模出发构建对数损失函数,其精妙之处在于对概率边界的敏感性——当预测值接近决策边界时自动放大误差。文章还对比了不同预测概率与真实标签的关系,阐明了交叉熵损失衡量信息损失的机制,为理解分类模型优化提供了理论基础。

Meraki____的博客 2256

【深度学习】交叉熵损失函数Cross-Entropy Loss

本文详细介绍了交叉熵损失函数在分类任务中的应用,重点分析二分类和多分类场景下的计算原理与实现。二分类交叉熵通过sigmoid函数将输出映射为概率,计算预测与真实标签的差异;多分类交叉熵则通过softmax函数实现多类别概率归一化。文章通过垃圾邮件分类和动物分类等实例展示了两种交叉熵的具体计算过程,并给出PyTorch代码实现示例。两种交叉熵本质上都衡量模型预测概率与真实分布的差异,预测越准确损失值越小。文中还讨论了样本权重处理不平衡数据的方法,为实际应用提供了参考。

Yngz_Miao的博客 3998

pytorch 实现cross entropy损失函数计算的三种方式

import torch import torch.nn.functional as F ''' 实现cross entropy损失函数计算的三种方式 ''' input = torch.randn(3, 5, requires_grad=True) # each element in target has to have 0 <= value < C target = torch....

WYXHAHAHA123的博客 4468

交叉熵损失函数(Cross Entropy Loss)

交叉熵损失函数的理论和pytorch代码解析

weixin_45977690的博客 5877
上一篇: 边缘计算(edge computing)中computation offloading、resource allocation、resource provisioning的区别
下一篇: 数值分析(第五版) 第一章知识点总结
xiongxyowo
博客等级 码龄9年 923粉丝 334原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值