我在尝试加载 Pytorch 模型时遇到问题:“无法在模块中找到身份”

Posted

技术标签:

【中文标题】我在尝试加载 Pytorch 模型时遇到问题:“无法在模块中找到身份”【英文标题】:I'm having a problem trying to load a Pytoch model: "Can't find Identity in module" 【发布时间】:2020-12-16 07:07:43 【问题描述】:

当尝试加载 pytorch 模型时,它会给出以下属性错误

model = torch.load('../input/melanoma-model/melanoma_model_0.pth')
model = model.to(device)
model.eval()

AttributeError Traceback(最近调用 最后)在 1 拱 = EfficientNet.from_pretrained('efficientnet-b2') 2模型=网络(拱=拱) ----> 3 torch.load('../input/melanoma-model/melanoma_model_0.pth') 4 模型 = 模型.to(设备) 5 model.eval()

/opt/conda/lib/python3.7/site-packages/torch/serialization.py 在 加载(f,map_location,pickle_module,**pickle_load_args) 第591章 第592章 --> 593 返回 _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args) 594 595

/opt/conda/lib/python3.7/site-packages/torch/serialization.py 在 _legacy_load(f, map_location, pickle_module, **pickle_load_args) 第771章 第772章 --> 773 结果 = unpickler.load() 774 第775章

AttributeError: 无法在

【问题讨论】:

你使用的是什么版本的 pytorch?你是如何保存模型的? 如果可能,也发布完整的堆栈跟踪。 版本是 1.5.1 我使用 torch.save(model, '../input/melanoma-model/melanoma_model_0.pth') 将模型保存在另一个笔记本中, 完整的堆栈跟踪完成 【参考方案1】:

首先,您需要一个模型类来将参数从 .pth 加载到其中。而你错过了一步:

model = Model()   # the model class (yours has probably another name)
model.load_state_dict(torch.load('../input/melanoma-model/melanoma_model_0.pth'))
model = model.to(device)
model.eval()

好了,希望能解决你的问题!

【讨论】:

arch = EfficientNet.from_pretrained('efficientnet-b2') model = Net(arch=arch) model.load_state_dict(torch.load('../input/melanoma-model/melanoma_model_0.pth')) model = model.to(device) model.eval() 它仍然给出同样的错误

以上是关于我在尝试加载 Pytorch 模型时遇到问题:“无法在模块中找到身份”的主要内容,如果未能解决你的问题,请参考以下文章

[深度学习] Pytorch—— 多/单GPUCPU,训练保存加载模型参数问题

如何加载部分预训练的 pytorch 模型?

PyTorch 数据集类 和 数据加载类 的一些尝试

如何使用 PyTorch 在预训练模型上添加新层? (给出了 Keras 示例。)

pytorch保存模型遇到点问题

pytorch1.0 用torch script导出保存模型