【已解决】多GPU数据并行训练断点后重新训练问题

背景:

在多个GPU上数据并行训练,出现断电导致训练停止,重新加载模型训练时出现以下报错:

RuntimeError: Error(s) in loading state_dict for DataParallel:
        Missing key(s) in state_dict: "module.fc0.weight", "module.fc0.bias", "module.fc0_bath.weight", "module.fc0_bath.bias", "module.fc0_bath.running_mean", 
        Unexpected key(s) in state_dict: "fc0.weight", "fc0.bias", "fc0_bath.weight", "fc0_bath.bias", "fc0_bath.running_mean",

经过网上查找资料,发现和其他人报错相反,他们miss fc0,unexpected module.fc0,通过以下代码查看保存model 的key:

import torch
path = ''
checkpoint = torch.load(path)
for key, value in checkpoint['model_state_dict'].items():
    print(key)

发现模型里没有module,所以思路应该是先加载模型,再放到多个GPU上面。

tips:

加载模型后,要先放在一个gpu上,也就是to(device),然后再net = nn.DataParallel(net)

问题解决!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值