Python 3.x 加载Pytourch 3.0模型时出现问题“意外密钥”;模块.功能.0.重量“;在州内

Python 3.x 加载Pytourch 3.0模型时出现问题“意外密钥”;模块.功能.0.重量“;在州内,python-3.x,pytorch,onnx,Python 3.x,Pytorch,Onnx,我正在尝试加载一个我用Pytorch训练过的模型, 但我一直得到以下错误: 文件“convert.py”,第12行,在 model.load_state_dict(torch.load('model/model_vgg2d_2.pth'))文件 “/usr/local/lib/python3.5/dist-packages/torch/nn/modules/module.py”, 第490行,处于加载状态 .format(name))键错误:“意外键”模块.features.0.weight“处

我正在尝试加载一个我用Pytorch训练过的模型, 但我一直得到以下错误:

文件“convert.py”,第12行,在 model.load_state_dict(torch.load('model/model_vgg2d_2.pth'))文件 “/usr/local/lib/python3.5/dist-packages/torch/nn/modules/module.py”, 第490行,处于加载状态 .format(name))键错误:“意外键”模块.features.0.weight“处于状态”

下面是我的代码:

import torch.onnx
import torch.nn as nn

class TempModel(nn.Module):
    def __init__(self):
        super(TempModel, self).__init__()
        self.conv1 = nn.Conv2d(3, 5, (3, 3))
    def forward(self, inp):
        return self.conv1(inp)

model = nn.DataParallel(TempModel())
model.load_state_dict(torch.load('model/model_vgg2d_2.pth'))
dummy_input = Variable(torch.randn(1, 3, 224, 224))
torch.onnx.export(model, dummy_input, "model_onnx/model_vgg2d_0.onnx")
我在同一台机器上工作,我用它来训练模型(它有多个GPU)。
知道我做错了什么吗

加载
状态dict
时,您需要它是相同的模型的
状态dict
:您不能将VGG模型的
状态dict
加载到完全不同的
基本模型中


旧答案
您保存的模型没有应用于模型的
nn.DataParallel
,现在您正在尝试在添加此项后加载。试一试

model = TempModel()
model.load_state_dict(torch.load('model/model_vgg2d_2.pth'))
model = nn.DataParallel(model)  # parallel AFTER load

同样的结果-首先,它给了我一个明显的“NameError:name'model'未定义”,当我这样做时:model=TempModel()model.load_state_dict(torch.load('model/model_vgg2d_2.pth'))model=nn.DataParallel(TempModel())它从未到达第三行,因为它只给了我相同的错误:keyrorm:'unexpected key“module.features.0.weight”在状态下,您是否可能尝试加载完全不同模型的状态??您是否尝试在
TempModel
上强制VGG重量?哦,这就是问题所在,我需要生成完全相同的模型以加载,谢谢!(我习惯于TF,我只是加载了一个pb文件,而不管他的基本模型如何)