欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Missing key(s) in state_dict: “features.conv1.weight“

程序员文章站 2022-05-27 10:33:05
...

试了网上很多解决方法,最终试出了可行的方法:

把原来的代码:

model.load_state_dict(checkpoint['state_dict'])

替换成:

new_state_dict = OrderedDict()
for k, v in checkpoint.items():
    if 'denseblock' in k:
        param = k.split(".")
        k = ".".join(param[:-3] + [param[-3] + param[-2]] + [param[-1]])
    new_state_dict[k] = v
    model.load_state_dict(new_state_dict)

可能是版本问题导致的不兼容,需要将键名替换成模型加载权重时所需要的键名

 

当我以为结束了的时候。。。

错误变成了:Missing key(s) in state_dict: "features.conv0.weight"

又是一番折腾,最终在代码:

model.load_state_dict(new_state_dict,False)

加了一个False,解决了

 

其实还没结束:)

EOFError: Ran out of input

又出现了新的错误

很迷惑的一个错误,直到我找到了这篇博客:(4条消息) AttributeError: Can't pickle local object 'BaseDataset.img_transformer.<locals>.<lambda>'_weixin_39450145的博客-CSDN博客

将num_workers的值改成了0

test_loader = DataLoader(dataset=test_dataset, batch_size=BATCH_SIZE,
                         shuffle=False, num_workers=0, pin_memory=True)

解决以上3个问题用了大半天时间,好在CheXNet-master终于可以跑了[撒花]由于显存不够,我只能把BATCH_SIZE直接改成了2(BATCH_SIZE=8的时候显存还是不够),之后打算把代码放到乌邦图上运行,windows太占现存了。

相关标签: 深度学习