对剪枝完的yolov8进行finetune时遇到RuntimeError: Expected all tensors to be on the same device的问题

RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! (when checking argument for argument mat2 in method wrapper_mm)

具体剪枝步骤参考https://blog.csdn.net/qq_40672115/article/details/130175558
在剪枝完yolov8后,微调时碰到了RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! (when checking argument for argument mat2 in method wrapper_mm)
定位到具体代码中
在这里插入图片描述
该错误表明张量位于不同设备上(一个在 CUDA 上,另一个在 CPU 上)。这可能由于两个张量不在同一设备上引起的。通常,PyTorch要求操作的张量应在相同的设备上,否则会出现类似的错误。

self.proj 可能不在与 pred_dist 相同的设备上。这可能是因为 self.proj 被指定在 CPU 上,而 pred_dist 在 GPU 上(或反之)。
要解决这个问题,需要确保两个张量位于相同的设备上。可以使用 to() 方法将 self.proj 放到与 pred_dist 相同的设备上。

 b, a, c = pred_dist.shape
 device = pred_dist.device

在光标处加上这两行代码,解决。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值