• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is Fal

武飞扬头像
醉公子~
帮助1

今天在跑yolov7的时候遇见,模型加载问题,因为我是使用CPU来加载pt模型的,但是出现了错误;

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加载的,报错的意思就是需要是需要反序列化加载,就是在加载模型的后面,加一个参数map_location,这个当时还以为是OS出现问题了(当时看见网上说是
1、CUDA版本不匹配
2、pytorch版本不对
3、OS模块出问题了),但是这个其实也都有可能,每个运行环境都不一样

学新通

原始加载方式:

学新通
报错:
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.

解决方法:

在加载模型的时候加上map_location=‘cpu’

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
weigths = torch.load('yolov.pt',map_location='cpu')
model = weigths['model']
model = model.half().to(device)
_ = model.eval()

学新通
希望这个对你有用!

谢谢点赞评论!

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhiahbcb
系列文章
更多 icon
同类精品
更多 icon
继续加载