如何将 PyTorch 模型下载为文件

问题描述 投票:0回答:1

我正在尝试创建 ResNet101 模型,但无法以通常的方式完成...

from torchvision.models import resnet101
model = resnet101(weights='DEFAULT')

...因为该链接未在我正在使用的资源中列入白名单(我收到 403 禁止错误)。我无权更改此设置。

所以我尝试使用此代码将模型直接下载到我的计算机...

import torch

url = 'https://download.pytorch.org/models/resnet101-5d3b4d8f.pth'
model_path = 'PATH/resnet101.pth'

torch.hub.download_url_to_file(url, model_path)

(此代码是将文件下载到我的本地计算机。然后我将其作为文件上传到我正在使用的虚拟机)

model_path = Path("PATH/resnet101.pth")
model = torch.load(model_path)

(此代码是在虚拟机上的Jupyter Notebook中打开文件)

...但这只是下载状态文件,当我尝试

model.eval()
时,我收到此错误:

AttributeError:'collections.OrderedDict'对象没有属性'eval'

如何将 ResNet101 模型下载为文件,然后将其用作代码中的模型?

谢谢!

deep-learning pytorch
1个回答
0
投票

首先,下次当你提出与深度学习框架相关的问题时,你应该提供更多关于你的框架版本和CUDA版本的信息,这将有助于社区更好地理解你的模型。

对于您的问题,要从Pytorch云加载模型的参数,您可以尝试指定要使用的权重版本。对于 resnet101,有两个可用。您可以在这里查看。

下面的示例来自我的 Pytorch 1.13.0 和 CUDA 11.8:

from torchvision.models import resnet101
model = resnet101(weights='IMAGENET1K_V1')

AttributeError:'collections.OrderedDict'对象没有属性'eval'

出现此问题是因为您正在加载 Python 字典并将其用作 Pytorch 模块。您可以修改代码来修复它:

model_path = Path("PATH/resnet101.pth")
model = torch.load_state_dict(model_path) # replace torch.load

Pytorch 在这里为初学者提供了关于如何保存和加载模型的详细教程。

© www.soinside.com 2019 - 2024. All rights reserved.