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
在光标处加上这两行代码,解决。