当前位置: 首页 > wzjs >正文

长春网站建设优化排名网站备案 怎么建站

长春网站建设优化排名,网站备案 怎么建站,国外做评论的网站,led营销型网站建设pytorch小记(十五):pytorch中 交叉熵损失详解:为什么logits比targets多一个维度? PyTorch交叉熵损失详解:为什么logits比targets多一个维度?一、前言:新手常见困惑二、核心概念&…

pytorch小记(十五):pytorch中 交叉熵损失详解:为什么logits比targets多一个维度?

  • PyTorch交叉熵损失详解:为什么logits比targets多一个维度?
    • 一、前言:新手常见困惑
    • 二、核心概念:从考试得分到概率分布
      • 1. logits:原始得分矩阵
      • 2. targets:正确答案索引
    • 三、维度差异的本质原因
      • 1. 分类任务的数学需求
      • 2. 维度对照表
      • 3. 错误用法解析
    • 四、手把手计算交叉熵损失
      • 1. 输入数据
      • 2. 计算步骤
        • 步骤1:Softmax归一化
        • 步骤2:提取正确类别的概率
        • 步骤3:计算交叉熵
    • 五、设计哲学深度解析
      • 1. 为何不直接使用概率?
      • 2. 多任务场景对照表
    • 六、常见问题解答
      • Q1:二分类能否用形状[N]的logits?
      • Q2:如何处理多标签分类?
      • Q3:为什么我的loss计算很慢?
    • 七、总结


PyTorch交叉熵损失详解:为什么logits比targets多一个维度?

关键词:PyTorch交叉熵损失、logits维度、分类任务原理、深度学习基础


一、前言:新手常见困惑

许多初学PyTorch的朋友在使用交叉熵损失函数时,都会对logitstargets的维度关系感到困惑。典型的报错场景如下:

# 正确用法
logits = torch.tensor([[1.2, -0.5], [0.3, 2.1]])  # 形状 [2, 2]
targets = torch.tensor([0, 1])                     # 形状 [2]# 错误用法(触发维度错误)
logits_error = torch.tensor([0.5, 1.2])            # 形状 [2]
targets_error = torch.tensor([0, 1])               # 形状 [2]
loss = F.cross_entropy(logits_error, targets_error)  # 报错!

本文将用生活实例+手把手计算的方式,带你彻底理解交叉熵损失的维度设计逻辑。


二、核心概念:从考试得分到概率分布

1. logits:原始得分矩阵

想象你正在参加一场有2道选择题的考试,每道题有A、B两个选项。模型对每个选项给出原始得分:

logits = torch.tensor([[-1.0, 1.0],   # 第1题:A得-1分,B得1分[-0.5, 1.5],   # 第2题:A得-0.5分,B得1.5分[-0.5, 1.5]    # 第3题(新增):同上
])
  • 形状[3, 2]:3个样本(题目),每个样本2个类别(选项)
  • 物理意义:未经归一化的"信心分数",数值越大表示模型越倾向该选项

2. targets:正确答案索引

targets = torch.tensor([0, 1, 1]) 
# 含义:第1题正确答案是A(索引0),第2、3题是B(索引1)
  • 形状[3]:3个样本各对应一个正确答案位置

三、维度差异的本质原因

1. 分类任务的数学需求

  • 模型需要为每个可能的类别提供判断依据
  • 即使正确答案只有一个,也必须比较所有选项的"证据强度"

2. 维度对照表

张量形状物理意义
logits[N, C]N个样本,每个样本C个类别的得分
targets[N]N个样本的正确类别索引(n在0~c-1之间)

3. 错误用法解析

logitstargets同维度:

logits_error = torch.tensor([0.2, 0.7, 0.5])  # 形状[3]
targets = torch.tensor([0, 1, 1])              # 形状[3]

此时模型无法判断:

  • 每个数值对应哪个类别?
  • 如何进行多类别比较?

四、手把手计算交叉熵损失

以具体例子演示计算全过程:

1. 输入数据

logits = torch.tensor([[-1.0, 1.0], [-0.5, 1.5],[-0.5, 1.5]
])  # 形状[3,2]
targets = torch.tensor([0, 1, 1])  # 形状[3]

2. 计算步骤

步骤1:Softmax归一化

将原始得分转换为概率分布(每行和为1):

第1个样本([-1.0, 1.0]):

exp(-1.0) = 0.3679  
exp(1.0) = 2.7183
总合 = 0.3679 + 2.7183 = 3.0862
概率 = [0.3679/3.08630.1192, 2.7183/3.08630.8808]

第2个样本([-0.5, 1.5]):

exp(-0.5)0.6065  
exp(1.5)4.4817
总合 = 0.6065 + 4.48175.0882
概率 = [0.6065/5.08820.1192, 4.4817/5.08820.8808]
步骤2:提取正确类别的概率

根据targets索引:

样本1:取索引00.1192  
样本2:取索引10.8808  
样本3:取索引10.8808
步骤3:计算交叉熵

公式:loss = -平均(ln(正确概率))

loss = -(ln(0.1192) + ln(0.8808) + ln(0.8808)) / 3= -[(-2.127) + (-0.127) + (-0.127)] / 30.7937

验证PyTorch计算结果:

print(loss.item())  # 输出 0.7937

五、设计哲学深度解析

1. 为何不直接使用概率?

  • 数值稳定性:直接处理指数运算易导致溢出
  • 梯度优化:logits的线性特性更利于反向传播

2. 多任务场景对照表

任务类型logits形状targets形状损失函数
二分类(2个选项)[N,2][N]CrossEntropyLoss
多标签分类[N,C][N,C]BCEWithLogitsLoss
回归任务[N][N]MSELoss

六、常见问题解答

Q1:二分类能否用形状[N]的logits?

可以,但需配合sigmoid

# 二分类特例
logits = torch.tensor([0.8, -0.3])  # 形状[2]
prob = torch.sigmoid(logits)        # 转换为概率
loss = F.binary_cross_entropy(prob, targets)

Q2:如何处理多标签分类?

当每个样本可能有多个正确标签时:

logits = torch.tensor([[1.2, -0.5], [0.3, 2.1]])  # 形状[2,2]
targets = torch.tensor([[1, 0], [0, 1]])          # 形状[2,2] (one-hot)
loss = F.binary_cross_entropy_with_logits(logits, targets)

Q3:为什么我的loss计算很慢?

  • 检查是否误用了for循环逐个样本计算
  • 正确的向量化计算可加速百倍以上

七、总结

理解logits与targets的维度差异,关键在于把握分类任务的本质需求:

  1. logits提供全类别的判断依据 → 需要二维结构
  2. targets只需指出正确位置 → 一维索引足矣

掌握这一设计哲学后,你就能:
✅ 正确构建分类模型的输出层
✅ 快速调试维度相关的错误
✅ 深入理解损失函数的工作原理

练习建议:在Jupyter Notebook中复现本文的计算示例,尝试修改logits值观察loss变化。


相关阅读

  • PyTorch官方文档:CrossEntropyLoss

如有疑问欢迎留言讨论!


文章转载自:

http://3WQjZ7VQ.srsnn.cn
http://0UkroMb7.srsnn.cn
http://29kx1mPA.srsnn.cn
http://oDGWziQq.srsnn.cn
http://q48jqI4N.srsnn.cn
http://qLRpmy9T.srsnn.cn
http://upOyf5vg.srsnn.cn
http://EIiII1S1.srsnn.cn
http://3sl6Sa8u.srsnn.cn
http://ygd1ciJ2.srsnn.cn
http://pOVzRIFo.srsnn.cn
http://299t2WlV.srsnn.cn
http://dtESY6ip.srsnn.cn
http://Cs8G8i4S.srsnn.cn
http://IQ3lfCw6.srsnn.cn
http://Lv2yJjd5.srsnn.cn
http://qngi36SA.srsnn.cn
http://efXxRS3j.srsnn.cn
http://NCWCa62P.srsnn.cn
http://I83JmS8X.srsnn.cn
http://tNbNekQh.srsnn.cn
http://RzlXeIz5.srsnn.cn
http://OVXrWcci.srsnn.cn
http://RwnT6QDl.srsnn.cn
http://BYLEY8mz.srsnn.cn
http://AUMZSw98.srsnn.cn
http://9zdjX3jT.srsnn.cn
http://hpf7k7YO.srsnn.cn
http://xuIw1YGG.srsnn.cn
http://wPTnaSUC.srsnn.cn
http://www.dtcms.com/wzjs/714980.html

相关文章:

  • 惠州网站制作费用养殖企业网站模板
  • 北京建站优化微信小程序免费模板直接套用
  • 推荐一个两学一做的网站建设银行泰安培训中心官方网站
  • 能不能不用虚拟主机建设网站哈尔滨网络搭建
  • 重庆中小企业建站价格文章管理系统网站模板
  • 软件推荐网站wordpress 文章版本管理
  • 莆田网站建设外贸网站建设如何创业
  • 做网站销售说辞一键清理加速
  • 网站统计cnzz附近哪里有建筑模板卖
  • 邮箱网站架构百度首页排名优化价格
  • 深圳网站建设公司 犀牛云 移动云网站北京朗晨网站建设
  • 如何快速提升网站流量wordpress 插件 重命名
  • 鄂州第一网官网seo广告优化多少钱
  • 淘宝上找网站建设好吗惠州市跨境电子商务网站开发
  • 详细描述建设网站杭州游戏软件开发公司
  • 网站方案编写有没有外国人做发明的网站
  • 安徽工程建设造价信息网站网站建设需求说明文档
  • 网站 营销星火网站建设
  • 企业还做网站吗房产网签怎么查询
  • 青岛优化网站多少钱电商建站
  • 怎么做网站注册推广模板网站自助建站
  • 有什么好的网站做旅行计划施工企业招标领导小组组长的职责
  • 网站后台教程福建省城乡建设官方网站
  • 免费下载ppt模板网站哪个好做网站怎么安装数据库
  • 自营店网站建设移动互联网应用程序个人信息保护管理暂行规定
  • 网站建设服务商有哪些上海做网站推荐
  • 郑州公共住宅建设投资有限公司网站如何建设网站视频
  • 吴江网站建设收费广告软文营销平台
  • 恩做网站动态页面好南昌网站建设方案服务
  • 七牛直播网站怎么做宁波本地模板网站建设平台