训练加载模型gpu映射问题

训练加载模型gpu映射问题

RuntimeError: Attempting to deserialize object on CUDA device 1 but torch.cuda.device_count() is 1. Please use torch.load with map_location to map your storages to an existing device.

遇到的错误是因为PyTorch尝试加载一个在不存在的CUDA设备上保存的模型。具体来说,这个模型是在CUDA设备1上保存的,但你当前的环境中只有一个CUDA设备(设备0)

要解决这个问题,需要在torch.load函数中使用map_location参数将加载的模型映射到一个有效的CUDA设备(或者映射到CPU,如果你更愿意这样做)。以下是修改代码的两种方式:

1.映射到现有的CUDA设备(如果你想使用GPU):

best_model_path = path + '/' + 'checkpoint.pth'
self.model.load_state_dict(torch.load(best_model_path))

解决方法:上述代码中加gpu映射

best_model_path = path + '/' + 'checkpoint.pth'
map_location = lambda storage, loc: storage.cuda(self.args.gpu)
state_dict = torch.load(best_model_path, map_location=map_location)

2.映射到CPU(如果你没有GPU或者更愿意使用CPU):

import torch

# 加载模型并映射到CPU
best_model_path = 'path_to_your_model_file.pth'
self.model.load_state_dict(torch.load(best_model_path, map_location=torch.device('cpu')))
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔云连洲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值