介绍:pytroch运行报错
一、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.
报错原因是项目要使用CUDA运行,而系统中找不到,因此要设置CPU运行。解决方案如下:
在
checkpoint = torch.load(os.path.join(path, opt.split + '_model.t7'))中添加
map_location='cpu'
即,
checkpoint = torch.load(os.path.join(path, opt.split + '_model.t7'),map_location='cpu')
二、
_pickle.PicklingError: Can't pickle <function <lambda> at 0x000001F023B9FA60>: attribute lookup <lambda> on __main__ failed
可能是由于torch.utils.data.DataLoader默认采用单进程(主进程)来加载数据,但可以通过num_workers设置同时使用几个子进程,num_workers=0表示只使用主进程。这里的workers由pytorch提供,其实现依赖于python的multiprocessing,其实现在windows下和unix下是不同的。
解决方案:将num_workers的值改为0