RuntimeError: ‘lengths’ argument should be a 1D CPU int64 tensor, but got 1D cuda:0 Long tensor

文章讲述了在使用torch时遇到的RuntimeError,问题在于数据在CUDA和CPU之间的处理不一致。作者已经确认数据读取在CPU上没有问题,但尝试将所有数据处理移到CPU时,又遇到了新的错误。解决方案是定位并确保所有数据处理都在同一设备(CPU或GPU)上进行,特别是在代码的83行和93行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误代码:

RuntimeError: ‘lengths’ argument should be a 1D CPU int64 tensor, but got 1D cuda:0 Long tensor


检索提示:
1、torch版本问题。
是否采用:否。版本在遇到巨大迭代时候,才会涉及到版本问题,设计者肯定考虑了版本的兼容问题,即使是换版本成功,个人感觉后期也会遇到。
2、数据读取问题。
是否采取:是。
解决思路:先测试是否可以在CPU运行,测试无误。说明数据在CPU读取,处理都没有问题。
测试在GPU运行。出现上述错误,按照问题提示,将总的数据读取放在CPU处理,但是提示错误2,如下。

RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!

**错误简述:**数据处理必须在一个处理器,不能在cpu和gpu同时处理。
**解决办法:**对数据处理部分,逐一Debug,判断出在CPU处理的数据,进行变量赋值,而不是把总的数据处理放到CPU上。
错误代码行数:train全局数据处理83行
model中93行,对部分数据处理进行CPU处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值