RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index“ not implemented for ‘Int‘

【已解决】RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index“ not implemented for ‘Float‘ 来进行训练模型加水印时报错RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'Float',这个在网上并没有找到解决办法,有的也只是RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'int',也就是说之前因为int类型不兼容出了问题,那这个float报错的原因是什么呢? 阅读详情

RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'Int'


今天有空,把之前遇到的问题总结一下。
问题Traceback详情

Traceback (most recent call last):
  File "E:/MyWorkspace/EEG/Pytorch/Train.py", line 79, in <module>
    opti='Adam')
  File "E:\MyWorkspace\EEG\Pytorch\Utils.py", line 133, in TrainTest_Model
    validation_loss, validation_acc = Test_Model(net, testloader, criterion,True)
  File "E:\MyWorkspace\EEG\EEGLearn-Pytorch\Utils.py", line 82, in Test_Model
    loss = criterion(outputs, labels.cuda()) # GPU
  File "D:\coson\anaconda3\envs\pytorch\lib\site-packages\torch\nn\modules\module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "D:\coson\anaconda3\envs\pytorch\lib\site-packages\torch\nn\modules\loss.py", line 1166, in forward
    label_smoothing=self.label_smoothing)
  File "D:\coson\anaconda3\envs\pytorch\lib\site-packages\torch\nn\functional.py", line 3014, in cross_entropy
    return torch._C._nn.cross_entropy_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index, label_smoothing)
RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'Int'

Process finished with exit code 1

关键错误在criterion(outputs, labels.cuda()) ,在本工程中criterion运行时给的值CrossEntropyLoss类实例,即: criterion = nn.CrossEntropyLoss(),因此该错误是在loss计算的时候发生的,原因就是类型不匹配,那个参数类的类型不匹配呢?(其实就是labels类型不匹配,手动给的参数中,我这labels是int32即Int,所以很好判定,但如果不知道,怎么办,接着往下看)
看到torch\nn\modules\loss.py的1166行,即label_smoothing=self.label_smoothing,该1166行是函数调用部分代码,完整代码如下:

    def forward(self, input: Tensor, target: Tensor) -> Tensor:
        return F.cross_entropy(input, target, weight=self.weight,
                               ignore_index=self.ignore_index, reduction=self.reduction,
                               label_smoothing=self.label_smoothing)

打开cross_entropy定义头,看到如下:

def cross_entropy(
    input: Tensor,
    target: Tensor,
    weight: Optional[Tensor] = None,
    size_average: Optional[bool] = None,
    ignore_index: int = -100,
    reduce: Optional[bool] = None,
    reduction: str = "mean",
    label_smoothing: float = 0.0,
) -> Tensor:

我们传入的参数对应cross_entropy的input和target,定义中没有指出input和target数值类型,到底是哪个参数不匹配,接着在cross_entropy函数往下看,发现其调用了C函数,芭比Q了,

torch._C._nn.cross_entropy_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index, label_smoothing)

看不到这个C函数的底层实现,如何办,看看官方给函数说明和例子吧,峰回路转,发现在cross_entropy函数说明中有以下例子:

  # Example of target with class indices
  input = torch.randn(3, 5, requires_grad=True)
  target = torch.randint(5, (3,), dtype=torch.int64)
  loss = F.cross_entropy(input, target)
  loss.backward()
``
官方给的target用的int64,即long类型
所以可以断定`criterion(outputs, labels.cuda())`中的labels参数类型造成。
由上,我们可以对labels参数类型做转为:
```python
labels.long().cuda()

所以:

criterion(outputs, labels.long().cuda())

修改后,代码正常运行。

解决ValueError: Expected input batch_size (40) to match target batch_size (8). 解决ValueError: Expected input batch_size (40) to match target batch_size (8) 阅读详情

相关推荐

{RuntimeError}“nll_loss_forward_reduce_cuda_kernel_1d_index“ not implemented for ‘Float‘

应该是使用损失函数的时候,遇到了这个问题,意思就是说,这个函数的某个参数不支持Float类型的: F.nll_loss(out, target) 这个函数就是算损失,一般来说,这个函数使用应该遵循下面两点: 第一点,应该前后维度一致,如果你的batchsize大于1,那么可以都展开成为一维的 第二点,out的类型是cuda类型的float,target是long()类型的 F.nll_loss(out.squeeze().flatten(), target_class.flatten().long())

weixin_39417324的博客 9302

RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index“ not implemented for ‘Int‘解决办法

运行pytorch在计算cross_entropy的loss遇到报错 RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'Int'` 原因是pytorch自带的损失计算函数不支持原本的标签1,2,3,4…,n,需要转换成网络需要的one_hot编码才行 具体代码如下 one_hot = torch.zeros(np.array(batch_size, num_class, device=tor

qi_sama的博客 1万+

Verilog除法器(32位无符号+带符号)

32位无符号除法器设计 恢复余数法: 恢复余数除法的基本思路是从“部分余数”中减去除数,如果结果为负(不够减),则恢复原来的部分余数,商0. 寄存器使用: reg_r 存放被除数a reg_b 存放除数b reg_r 存放余数(初始清零) 具体做法: 做减法时,减数是reg_b中的除数,被减数是reg_r中的余数左移一位,最低位由reg_q(被除数)的最高位补充。为了能够判断相减结果的正...

qq_38600065的博客 1万+

[debug] RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index“ not implemented for ‘Int‘

问题描述 在使用nn.CrossEntropyLoss时出现报错: loss_id = self.IDLoss(id_preds, id_targets) Traceback (most recent call last): File "/home/hgx/pycharm-2020.1.3/plugins/python/helpers/pydev/_pydevd_bundle/pydevd_exec2.py", line 3, in Exec exec(exp, global_vars, lo

真理无穷,进一步有进一步的欢喜 1万+

SpringBoot实战——仿b站项目(一)

热部署就是当应用程序这种运行的时候升级冉家或者修改某一部分代码、配置文件时,无需手动启动应用,即可修改的部分生效工具 + IDEA配置。

weixin_52880572的博客 3453

从零开始:在Windows WSL中搭建Openfoam7+blastfoam2.0.0开发环境(避坑大全)

本文详细指导在Windows WSL中搭建OpenFOAM 7与BlastFOAM 2.0.0开发环境,重点解析了安装过程中的常见“坑点”,如编译模式不匹配导致的符号错误,并提供了从系统准备、软件部署到环境验证的完整解决方案,帮助开发者高效构建CFD与爆炸模拟开发平台。

stem5的博客 523

CrossEntropy报错RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index“ not implemented for ‘Int‘

不能为float或者int 需要转化为long。在进行损失函数计算时 使用交叉熵损失函数。这是因为label的数据类型。

weixin_49983968的博客 414

基于大模型的JMeter日志智能分析服务化实践

在软件性能测试领域,日志分析是定位系统瓶颈、评估稳定性的关键环节。传统基于规则或正则表达式的分析方法,在面对格式多变、上下文关联复杂的海量日志时,往往效率低下且难以深入。大语言模型(LLM)凭借其强大的自然语言理解与推理能力,为这一挑战提供了新的解决方案。其技术价值在于能够自动化地从非结构化文本中提取语义信息、关联分散的上下文,并生成可操作的根因分析与优化建议,从而将工程师从繁琐的日志筛查中解放出来,显著提升问题诊断的深度与效率。这一技术可广泛应用于自动化测试报告生成、实时监控预警、脚本调试辅助等工程实践场

weixin_28839549的博客 338

pytorch自己收集的数据模型训练遇到的几个问题

pytorch模型训练遇到的几个问题

sslc_的博客 2358

Nestjs框架: 集成 Prisma

NestJS官方文档提供了两种数据库相关的内容:Techniques下的数据库板块和Recipes下的具体数据库集成方案。本文以Prisma为例,演示了如何集成Prisma到NestJS项目中。首先创建NestJS项目并安装Prisma,配置MySQL数据库连接。通过Prisma CLI初始化项目、定义数据模型并生成迁移文件。接着创建Prisma模块和服务,配置Prisma客户端连接数据库。最后在控制器中注入PrismaService实现数据查询。整个过程包含了Docker启动MySQL、Prisma模型定

Wang的专栏 1292

数据分析之AB测试基础知识

在 A/B 测试中,零假设是两组的指标是相同的,当假设检验推断出两组指标不同,但事实上两组指标相同时,就是第一类错误。

qq_45727498的博客 559

“nll_loss_forward_reduce_cuda_kernel_2d_index“ not implemented for ‘Int‘ 问题解决

错误nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'Int',这是pytorch在计算交叉熵时出现的错误

weixin_45218778的博客 1万+

【AI产品与商业航图】Flux.1 完全开源 AI 绘图模型:本地部署与 ComfyUI 实战指南

Flux.1是一个开源项目,用户可以自由使用和修改,完全免除使用费用。🖥️本地部署支持:与一些依赖云端计算的工具不同,Flux.1支持本地部署,确保用户可以离线使用并自主控制数据隐私。🔄兼容ComfyUI框架:Flux.1可以无缝集成到ComfyUI中,用户可以享受更加简便和直观的操作界面。🎨卓越的图像生成能力:Flux.1能够生成高质量、细腻的图像,支持多种风格与创作主题的切换。💾低硬件要求。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1735

RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index“ not implemented for ‘Float‘

但是出了题目所示的错,查看资料才知道交叉熵loss函数接受两个参数,第一个是float,第二个是long!背景:深度学习训练时,我自己提取了输入跟输入进行训练,把一些字符串类别映射成了数字,

qq_63075864的博客 540

深度探索:VS2022 牵手 DeepSeek,开启开发新征程

通过将 VS2022 与 DeepSeek 接入,我们成功开启了智能开发的新征程。从前期的硬件准备、软件环境搭建,到实战环节的一步步配置与整合,再到全面的测试与验证,每一个步骤都充满挑战,但也带来了满满的收获。在实际应用中,VS2022 与 DeepSeek 的结合展现出了强大的优势,为开发者带来了更高的效率和更出色的代码质量。无论是代码自动补全、智能代码审查,还是自然语言交互编程,都让开发过程变得更加智能、便捷,极大地提升了开发体验。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 3521

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Pytorch报错`RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index“ not implemented for ‘Float‘`

出现这个原因是因为我的代码中使用了BCE Loss,而BCE Loss函数输入的label标签类型应该是。

qq_43369406的博客 834

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

nn.CrossEntropyLoss()报错

需要将一维的label 改为的label.long()

weixin_40248634的博客 696

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

“nll_loss_forward_reduce_cuda_kernel_2d_index“ not implemented for ‘Float‘

Traceback (most recent call last): File "D:\nlp\zhinengyunwei\wh_lstm_pytorch.py", line 213, in <module> loss = loss_func(torch.squeeze(output), target) File "D:\ProgramData\Anaconda3\lib\site-packages\torch\nn\modules\module.py", line 1102,

AI浩 1万+

torch.nn.CrossEntropyLoss()

参考:torch.nn.functional 和 torch.nn 去使用softmax,logsoftmax,crossentropy等的区别_LUQC638的博客-优快云博客参考:softmax + log = logsoftmax, logsoftmax+ nllloss= crossentropy_LUQC638的博客-优快云博客import torchimport torch.nn as nnimport torch.nn.functional as F# Example of target

weixin_61445075的博客 5083

pytorch下训练模型出现 target 8 is out of bounds

在模型调试阶段,如果定位不出具体的错误,建议将模型放在CPU上进行调试,这样荣誉i做9分类,在CPU上调试时,报的错误是 从报错的信息可以看出,是计算损失函数时出错了,但是在GPU上进行调试时,根本不容易定位到具体错误,如下: 从这个报错来看,非专业人士几乎看不懂从报错来看,是标签超出了界限,作9分类,我的标签是从1开始的,所以会报错,将标签改为从0开始就解决问题了...

码到功成的博客 4115

PyTorch报错:RuntimeError: CUDA error: device-side assert triggered at /pytorch/aten/src/THC/generic

报错显示: RuntimeError: cuda runtime error (710) : device-side assert triggered at C:/cb/pytorch_1000000000000/work/aten/src\THC/generic/THCTensorMath.cu:29 用gpu运行不能显示出真正的错误原因,把模型和数据放在cpu上运行显示: return torch._C._nn.cross_entropy_loss(input, target, weight, _Re

qq_43349542的博客 2550

CrossEntropyLoss的 device-side assert triggered报错

RuntimeError: CUDA error: device-side assert triggere

weixin_44359953的博客 3161
上一篇: Scrapy之Spider的用法
下一篇: Ablation study(消融研究、消融学习、消融实验)
Accelerating
博客等级 码龄9年 3220粉丝 28原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值