这个错误是因为你的代码在尝试在CUDA设备上反序列化对象,但是torch.cuda.is_available()为False,说明你的机器没有安装CUDA或者CUDA驱动程序没有正确安装。

要解决这个问题,你可以采用以下两种方法之一:

  1. 如果你的机器是CPU-only的,你可以在torch.load()中使用map_location=torch.device('cpu'),将存储映射到CPU上,以便在CPU上反序列化对象。例如:
checkpoint = torch.load('model.pt', map_location=torch.device('cpu'))
  1. 如果你的机器支持CUDA,你需要检查CUDA是否正确安装,并确保你的代码中使用的设备与你的机器上的设备匹配。例如,如果你的机器上有多个GPU,你需要确保你的代码使用正确的GPU。你可以使用torch.cuda.device_count()来检查你的机器上有多少个GPU,并使用torch.cuda.set_device()来设置你要使用的GPU。例如:
if torch.cuda.is_available():
    device = torch.device("cuda")
    n_gpu = torch.cuda.device_count()
    torch.cuda.set_device(0) # 设置你要使用的GPU
else:
    device = torch.device("cpu")
    n_gpu = 0

model.to(device)

以上是两种解决方法,你可以根据自己的情况选择使用哪种方法

runtimeError Attempting to deserialize object on a CUDA device but torchcudais_available is False If you are running on a CPU-only machine please use torchload with map_location=torchdevicecpu to map

原文地址: https://www.cveoy.top/t/topic/hjjc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录