在多GPU上并行训练的模型如何在单GPU或CPU上加载。
多卡训练的模型保存下来的参数名称是module.xxx.weight,而单卡的参数名称是xxx.weight,这时就会报错,找不到相应的字典的错误。
办法也很简单,只需要在state_dict上进行修改,将module.xxx.weight改为xxx.weight,再load就可以了。
代码如下:
import torch from collections import OrderedDict state_dict = torch.load(net_path) new_state_dict = OrderedDict() for k, v in state_dict.items(): # k为module.xxx.weight, v为权重 name = k[7:] # 截取`module.`后面的xxx.weight new_state_dict[name] = v # load params net = XXXnet() net.load_state_dict(new_state_dict)
热门文章
- 养宠物违约金怎么赔偿 养宠物违约金怎么赔偿的
- 考兽医资格证有用吗(考兽医资格证有用吗知乎)
- 1月19日22.5M/S|SSR/V2ray/Clash/Shadowrocket免费节点每天更新订阅链接,翻墙机场推荐分享
- 2月6日19.6M/S|Shadowrocket/V2ray/Clash/SSR免费节点每天更新订阅链接,翻墙机场推荐分享
- 被猫咬了怎么判断有没有得狂犬病(被猫咬了怎么判断有没有得狂犬病毒)
- 猫粮狗粮店铺名字(狗粮店名怎么起名)
- 兽医站给猫打疫苗有证吗(兽医店给猫***吗)
- 狗粮加工设备及配方赚钱吗(狗粮加工厂需要投资多少钱)
- TensorFlow之张量的形状相关操作
- 广州哪里有猫领养的地方呀(广州哪里有猫领养中心)