首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用torch.hub.load加载本地模型?

如何使用torch.hub.load加载本地模型?
EN

Stack Overflow用户
提问于 2021-04-28 14:55:10
回答 2查看 17.6K关注 0票数 7

我需要避免从网络下载模型(由于对机器安装的限制)。

这是可行的,但它从因特网下载模型

代码语言:javascript
运行
复制
model = torch.hub.load('pytorch/vision:v0.9.0', 'deeplabv3_resnet101', pretrained=True)

我将.pth文件和hubconf.py文件放置在/tmp/文件夹中,并将代码更改为

代码语言:javascript
运行
复制
model = torch.hub.load('/tmp/', 'deeplabv3_resnet101', pretrained=True, source='local')

但令我惊讶的是,它仍然从互联网下载模型。我做错了什么?如何在本地加载模型?

为了给您提供更多的细节,我在一个在运行时具有只读卷的Docker容器中完成了所有这些工作,所以这就是为什么下载新文件失败的原因。

EN

Stack Overflow用户

回答已采纳

发布于 2021-04-28 21:16:57

在没有Internet连接的机器上,有两种方法可以获得可移植的模型。

  1. 在普通机器上用预先训练过的模型加载DeepLab,使用JIT编译器将其导出为图形,并将其放入机器。该脚本简单易懂:导出模型=torch.hub.load(‘py手电/vision:v0.9.0’,‘deeplabv3_3_resnet101 101’,pretrained=True).eval() traced_graph =torch.jit.trace(模型,torch.randn(1,3,H,W)) traced_graph.save('DeepLab.pth') #,加载模型=torch.hub.load,在这种情况下,将权重和网络结构保存为计算图,所以你不需要任何额外的文件。
  2. 看看torchvision的GitHub存储库。 有一个下载URL用于DeepLabV3,具有Resnet101主干网权重。 您可以下载一次这些权重,然后使用带pretrained=False标志的torchvision的deeplab并手动加载权重。 model =torch.hub.load(‘py手电/vision:v0.9.0’,‘deeplabv3 3_resnet101 101’,pretrained=False) model.load_state_dict(torch.load(‘下载权重路径’) 考虑到,在状态dict中可能有一个'state_dict'或类似的父密钥,您将在其中使用: Model.load_state_dict(torch.load(‘下载权重路径’)‘state_dict’)
票数 5
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67302634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档