paddle复现pytorch踩坑(七):softmax_with_cross_entropy的用法

pytorch中的softmax回归和CrossEntropy损失函数 使用softmax求损失的过程中,需要经历以下几步: 1.应用softmax函数; 2.取对数; 3.计算损失 其中第1、2步可以使用torch.nn.LogSoftmax()完成,第3步可以使用torch.nn.NLLLoss完成 也可以使用torch.nn.CrossEntropyLoss一次性完成3步操作,构成一个完整的softmax分类器。(使用最多!!!) CLASS torch.nn.CrossEntropyLoss(weight=None, size_average=None, i 阅读详情

fluid.layers.softmax_with_cross_entropy

  • 作用:OP实现了softmax交叉熵损失函数。该函数会将softmax操作、交叉熵损失函数的计算过程进行合并,从而提供了数值上更稳定的梯度值。
  • 链接:pp飞桨API说明

复现问题

  • 报错:loss为nan
  • 解决:API对应错误
  • pytorch采用:F.cross_entropy
  • 原拟采用:fluid.layers.cross_entropy
  • 更改:fluid.layers.softmax_with_cross_entropy

问题分析

  • F.cross_entropy时,相当于执行以下代码
soft_out = F.softmax(out)
log_soft_out = torch.log(soft_out)
loss = F.nll_loss(log_soft_out, y)
  • paddle API里cross_entropy不包含softmax,故采用softmax_with_cross_entropy
  • 实际复现的代码
# pytorch code
loss_cls = F.cross_entropy(cls[active, :], labels[active], reduction='none', ignore_index=IGN_FLAG)
    
# paddlepaddle code
index_active = fluid.layers.nonzero(active)
loss_cls = fluid.layers.softmax_with_cross_entropy(
                    fluid.layers.gather(cls, index_active), fluid.layers.reshape(fluid.layers.gather(labels, index_active), [-1, 1]), ignore_index=IGN_FLAG)

问题拓展

理论上讲 fluid.layers.softmax_with_cross_entropy 效果应等同于 fluid.layers.softmax + fluid.layers.cross_entropy。实际测试的时候二者loss的计算后取均值结果不一样,且对比pytorch的方法计算结果不同,下面进行对比:

  • F.cross_entropy
    Min = 0.7678133
    Mean = 10.989796
    Max = 320.526

  • fluid.layers.softmax + fluid.layers.cross_entropy
    Min = 0.7678134
    Mean = 9.627525e+17
    Max = 1e+20

  • fluid.layers.softmax_with_cross_entropy
    Min = 0.7678134
    Mean = 9.82002
    Max = 64.6236
    总结:排查了一下,不是其他API计算错误,是三者的差异,实际paddle计算还是应使用softmax_with_cross_entropy。

【PyTorch】第九节:Softmax 函数与交叉熵函数 本实验主要讲解了分类问题中的二分类问题和多分类问题之间的区别,以及每种问题下的交叉熵损失的定义方法。由于多分类问题的输出为属于每个类别的概率,要求概率和为 1 。因此,我们还介绍了如何利用 Softmax 函数,处理神经网络的输出,使其满足损失函数的格式要求。 阅读详情

相关推荐

SketchUp与D5室外建筑渲染高效工作流实操指南

建筑渲染是设计表达的关键环节,传统室外建筑渲染流程依赖SketchUp建模、导入3ds Max、V-Ray离线渲染,每一步都耗费大量时间,模型转换成本高。实时渲染技术的成熟改变了这一局面,它基于GPU并行计算与硬件光线追踪,实现所见即所得的操作体验。D5渲染器作为国产实时渲染工具,通过插件与SketchUp深度联动,一键同步模型、材质与场景,覆盖从别墅住宅到小型公建的室外项目。本文围绕室外建筑渲染的完整链路,讲解模型整理、PBR材质调优、灯光环境设置与构图输出,帮助设计师在方案表达与工程实践之间取得平衡。

weixin_30600197的博客 452

飞桨中softmax_with_cross_entropy的用法

飞桨中softmax_with_cross_entropy的用法 本文只作为笔记用。 环境:paddle 1.8.5 一直以来不太清楚这个如何调用,只知道例程里是这样用,不知所以然。 下面记录一下它的用法。 源码如下: def softmax_with_cross_entropy(logits, label, soft_label=False,

AlexDish的博客 2701

【第三方互联】3、腾讯QQ授权第三方登录

当我们创建的 QQ 互联应用成功后,我们便可以开始使用该应用来实现 QQ 互联 一、获取 APP ID 和 APP Key 1、找到我的应用 2、点击应用,进入详情 这样,我们就获取到了 APP ID 和 APP Key 二、进行开发 1、将 APP ID 、APP Key,以及该应用的信息放入项目中的配置文件中,我使用的是SpringBoot,我放在了 application.y...

JACKAL 22万+

softmax with cross-entropy loss求导(转载+细节整理)

softmax 函数 softmax(柔性最大值)函数,一般在神经网络中, softmax可以作为分类任务的输出层。 其实可以认为softmax输出的是几个类别选择的概率,比如我有一个分类任务,要分为三个类,softmax函数可以根据它们相对的大小,输出三个类别选取的概率,并且概率和为1。 即总共有kkk类,必有: ∑k=1Cyi=1\sum_{k=1}^Cy_i=1k=1∑C​yi​=1 为了方...

微电子学与固体电子学-俞驰 3268

微信小程序 - [wxapplib]] backgroundfetch privacy fail {“errno”:101,“errMsg”:“private_getBackgroundFetchDa

微信小程序报错之backgroundfetch privacy fail,微信小程序报错WAServiceMainContext.js:1 [wxapplib]] backgroundfetch privacy fail {“errno“:101,怎么解决?问题出现:调用wx.chooseMessageFile报错(开发者工具中正常)用户隐私协议中未声明小程序使用此功能,安卓真机调试报错:backgroundfetch privacy fail ,怎么解决?微信小程序[wxapplib]] backgrou

🏆 前端领域优质创作者 1万+

vue2 - elementUI表格table树形结构复选框勾选父子联动示例,el-table树状表格tree复选框checkbox多选框全选/反选取消children(当子级全选中,父级自动勾选)

vue2,elementui,el-table树状表格多选,树形结构结合多选框使用,实现单选父子联动全选反选,勾选联动父级勾选,表格多选check父子联动,table表格children如何嵌入复选框,el-table使用多选框与树形数据写一个有半选全选功能的表格,el-table树形表格实现复选框多选效果,表格树状结构多选,每一个row都可以选中并且联动全选按钮,table选父带子选子带父,树形数据与懒加载,Table表格树形结构多选框选中父级时会选中子级,elementUI表格里树形结构嵌套复选框全选全

✅ 精选推荐文章 1万+

Softmax with Cross Entropy理论笔记

一、Softmax应用场景-CNN分类 全连接层 全连接层,又称完全连接层,即fully-connected layer,利用基于训练数据集得到的特征,将最后的输出映射到线性可分的空间,从而将输入图像分为不同的类别。 “完全连接”这个术语意味着前一层中的每个神经元都连接到下一层的每个神经元。 添加完全连接层也是一个比较简单的学习这些特征非线性组合的方式。 输出层 当抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。输出层主要准备做最后目标结果的输出。 图像目标识别通常使用Softmax输

hxl 514

倍福EL6002做RS232通信获取称重数据..

本文介绍EL6002模块通过RS232自由口通信协议获取从站数据。具体数据对照说明手册即可。

weixin_41883890的博客 1010

Softmax with Cross Entropy

Geek 573

SMPLify-x-master | 复现记录

由于毕业设计中将会用到smpl模型,而smplify方法的各环境依赖版本比较老,复现不太容易,因此便进行了smplifyx方法使用smplx的方法。由于在过程中遇到较多坑,因此进行记录和分享。

qq_44916003的博客 5100

YOLO26改进策略【Neck】| CVPR2025 LCA轻量交叉注意力 跨层级双向引导 + 分层降噪增强,提升微小目标特征表达

简单相加、拼接融合无法建立深浅层双向约束关系,浅层微小目标易被深层背景覆盖,深层全局信息难以修正浅层噪声;普通单路自注意力仅单一层内建模依赖,缺少跨层级特征互引导机制,深浅特征信息割裂;标准多头跨注意力计算量大、参数量高,轻量化单模态检测/分割网络部署困难,无法区分前景目标与背景噪声。为此设计单模态轻量化交叉注意力LCA,构建浅层细节、深层语义双分支双向引导结构,轻量完成跨层级特征交互,同步降噪并强化单模态微小目标特征。

Limiiiing的博客 522

softmax交叉熵损失函数深入理解(二)

前期博文提到经过两步smooth化之后,我们将一个难以收敛的函数逐步改造成了softmax交叉熵损失函数,解决了原始的目标函数难以优化的问题。Softmax 交叉熵损失函数是目前最常用的分类损失函数,本博文继续学习Softmax 交叉熵损失函数的改进,详细的理论参考论文《基于深度学习的人脸认证方法研究》,这篇论文真的太棒了,是我见过最优秀的专门针对损失函数进行深入研究的杰作。...

m0_61363749的博客 9261

uniapp [全端兼容] - 实现大文件上传分片/切片+本地选择文件上传超大文件,大文件切片上传+断点续传+上传进度条+失败自动重传,支持单个/批量上传图片、视频、文档各种文件(App、小程序、H5

uniapp 分片 断点续传 大文件上传。uniapp大文件切片上传,uniapp实现大文件上传 分片上传 进度条,分片上传附件,实现大文件上传,实现分片大文件上传,Uniapp实现大文件上传 分片上传 进度条,uniapp文件分片上传,uniapp如何上传很大的文件,在选择文件后,按指定大小将文件切割成独立的文件片,并逐片上传,uniapp 微信小程序上传大文件如何切片,uniapp APP实现大文件分片上传、断点续传、秒传,解决大文件上传问题,大文件上传如何做断点续传,uniapp上传视频,Uniapp

🏆 前端领域优质创作者 1万+

图像分割套件PaddleSeg全面解析(六)损失函数代码解析

目前PaddleSeg套件的动态图版本只支持一种损失函数Cross Entroy Loss(交叉熵)。Cross Entroy Loss是一种很常用的损失函数,在图像分类中基本都会用到。一般在图像分类中,神经网络最终输出节点数目与类别数一致,形状为[batch_size, num_classes],样本标签直接使用类别的序号表示,形状为[batch_size, 1]。在paddle中计算交叉熵的函数为softmax_with_cross_entropy,一般比较常用的两个参数为logits和label,可以

人工智能研习社 3418

YOLOv8改进 | 主干网络 | 增加网络结构增强小目标检测能力【独家创新——附结构图】

YOLOv8改进,小目标检测,yolov8

kay_545 6016

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

paddle softmax_with_cross_entropy 的用法

import numpy as np import paddle.fluid as fluid import paddle logit_y = np.array([[1.23, 2.33, 3.33, 2.11], \ [5.23, 2.33, 3.33, 2.11], \ [1.23, 8.33, 3.33, 2.11], \ [1.23, 2.33, 3.33, 2.11]]).a.

Tak-Wah Blog 860

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

解决问题:cannot import name ‘layers‘ from ‘paddle.fluid.和No module named ‘paddle.fluid.dataloader‘

将from paddle.fluid.dataloader.collate import default_collate_fn改成from paddle.io.dataloader.collate import default_collate_fn。将from paddle.fluid.dygraph import layers改成from paddle.nn.layer import layers即可;

weixin_38233093的博客 2086

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

刘二PyTorch深度学习(八)——多分类问题(Softmax+CrossEntropy)

多分类问题

zhaoweiaier的博客 1046

关于Pytorch的softmax与Cross_entropy交叉熵的测试

主要是搞不清在使用CrossEntropyLoss是的输入大小size。于是分析了softmax,Nll_loss,crossentropyloss三个函数。因为 crossentropyloss = softmax + Nll_loss。 1、官方文档 def nll_loss(input, target, weight=None, size_average=None, ignore_index=-100, reduce=None, reduction='mean'):

dhldxcycsdn的博客 1404

【pytorch】使用numpy实现pytorch的softmax函数与cross_entropy函数

公式 Softmax(xi)=exp⁡(xi)∑jexp⁡(xj) {Softmax}(x_{i}) = \frac{\exp(x_i)}{\sum_j \exp(x_j)} Softmax(xi​)=∑j​exp(xj​)exp(xi​)​ 结果一致 从源码上来看,torch.nn.functional.F.softmax实际上调用的是Tensor自身的softmax函数 公式 Log_softmax(xi)=lnexp⁡(xi)∑jexp⁡(xj) {Log\_softmax}(x_{i}) = ln

安安爸Chris的专栏 4951

【PyTorch】深度学习实践之 用Softmax和CrossEntroyLoss解决多分类问题(Minst数据集)

用Softmax和CrossEntroyLoss解决多分类问题(Minst数据集),kaggle赛题商品分类

zoetu 3037

Pytorch实现Softmax和Cross-entropy

Softmax  将输出归一化到(0,1)区间,可以将Softmax输出当作概率,从而使用Cross Entropy计算 Loss。 def softmax(X): X_exp = torch.exp(X) partition = X_exp.sum(1, keepdim = True) return X_exp / partition Cross-entropy  这样子输出的应该是 y_hat[0, 0] 和 y_hat[2, 1] y = torch.tensor([0, 2

m0_47746932的博客 971

paddle 基础函数 cross_entropy

官方文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/cross_entropy_cn.html 示例: import paddle.fluid as fluid import numpy as np class_num = 7 x = fluid.data(name='x', shape=[-1, 1, 10], dtype='float32') label = fluid.data(name=.

Tak-Wah Blog 1318

更快更简单|飞桨PaddlePaddle单机训练速度优化最佳实践

导读:飞桨(PaddlePaddle)致力于让深度学习技术的创新与应用更简单。在单机训练速度方面,通过高并行、低开销的异步执行策略和高效率的核心算子,优化静态图训练性能,...

PaddlePaddle 2349

PaddlePaddle动手实现三个版本的CrossEntropy

今天有人对CrossEntropy有疑惑,我做了一个小实验,这里把我的代码分享了出来: import paddle import paddle.nn as nn import paddle.nn.functional as F y_true=paddle.to_tensor([[1],[2]]) y_pred=paddle.to_tensor([[0.05,0.95,0],[0.1,0.8,0.1]]) one_hot = F.one_hot(y_true,num_classes=3) res=pad

Learning from the mistakes 623

8.paddlepaddle之loss损失函数自定义

损失函数是是用来估量你模型的预测值f(x)与真实值Y的不一致程度。不同的损失函数对模型拟合会有不同的效果,损失函数越小,一般模型的鲁棒性就越好。在深度学习中,我们经常需要调整损失函数来达到一些效果倾斜的目的。使用paddle内置的cross_entropy算子实现算法如上,一个二分类问题,我们即使用了交叉熵损失,又使用了均方损失,并赋予两个损失不同的权重。使用自定义损失函数训练也是相当简单的。在这里我们使用MNIST作为我们的数据集,并使用paddle内置的lenet进行训练,验证自定义损失函数。...

kakaccys的博客 1945
上一篇: paddle复现pytorch踩坑(六):多维度index下gather的用法
下一篇: paddle复现pytorch踩坑(八):smooth_l1的用法
潜沉10
博客等级 码龄11年 66粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值