运行代码的时候当执行到这一行就报错没有cuda
data = pickle.loads(b)
报错信息如下:
RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.
嫌麻烦可以跳过过程直接看到结尾的解决方案。
因为目前跑的这台机子没有cpu,所以把device设置成了cpu。在网上找了一同说是load模型model的时候没有,可寻思着明明都设置了呀。
没设置的可以在load后面加一个参数:
map_location=torch.device('cpu')
debug后发现是
data = pickle.loads(b)
这段代码底层会进入到torch下的storage.py
...
加载的时候在storage.py后面加一个map_location=torch.device('cpu')参数。
运行成功~