10

我指的是可以在这里找到的模型:https ://pytorch.org/docs/stable/torchvision/models.html#torchvision-models

4

3 回答 3

23

正如@dennlinger在他的回答中提到的那样:torch.utils.model_zoo当您加载预训练模型时,会在内部调用。

更具体地说,torch.utils.model_zoo.load_url()每次加载预训练模型时都会调用方法:相同的文档提到:

的默认值model_dir是默认为的$TORCH_HOME/models地方 。$TORCH_HOME~/.torch

可以使用$TORCH_HOME 环境变量覆盖默认目录。

这可以按如下方式完成:

import torch 
import torchvision
import os

# Suppose you are trying to load pre-trained resnet model in directory- models\resnet

os.environ['TORCH_HOME'] = 'models\\resnet' #setting the environment variable
resnet = torchvision.models.resnet18(pretrained=True)

通过在 PyTorch 的 GitHub 存储库中提出问题,我遇到了上述解决方案: https ://github.com/pytorch/vision/issues/616

这导致了文档的改进,即上述解决方案。

于 2018-10-12T17:44:21.150 回答
7

是的,您可以简单地复制 url 并将wget其下载到所需的路径。这是一个插图:

对于亚历克斯网

$ wget -c https://download.pytorch.org/models/alexnet-owt-4df8aa71.pth

对于Google Inception (v3)

$ wget -c https://download.pytorch.org/models/inception_v3_google-1a9a5a14.pth

对于SqueezeNet

$ wget -c https://download.pytorch.org/models/squeezenet1_1-f364aa15.pth

对于MobileNetV2

$ wget -c https://download.pytorch.org/models/mobilenet_v2-b0353104.pth

对于DenseNet201

$ wget -c https://download.pytorch.org/models/densenet201-c1103571.pth

对于MNASNet1_0

$ wget -c https://download.pytorch.org/models/mnasnet1.0_top1_73.512-f206786ef8.pth

对于ShuffleNetv2_x1.0

$ wget -c https://download.pytorch.org/models/shufflenetv2_x1-5666bf0f80.pth

如果您想在 Python 中执行此操作,请使用以下内容:

In [11]: from six.moves import urllib

# resnet 101 host url
In [12]: url = "https://download.pytorch.org/models/resnet101-5d3b4d8f.pth"

# download and rename the file to `resnet_101.pth`
In [13]: urllib.request.urlretrieve(url, "resnet_101.pth")
Out[13]: ('resnet_101.pth', <http.client.HTTPMessage at 0x7f7fd7f53438>)

PS:你可以在torchvision.models的各个python模块中找到下载地址

于 2018-10-03T18:07:33.990 回答
-2

TL;DR:不,直接不可能,但您可以轻松调整它。

我认为您要做的是查看torch.utils.model_zoo,当您加载预训练模型时会在内部调用它:

如果我们查看预训练模型的代码,例如此处的 AlexNet ,我们可以看到它只是调用了前面提到的model_zoo函数,但没有保存位置。您可以修改 PyTorch 源以指定它(这实际上是 IMO 的一个很好的补充,因此可能会为此打开一个拉取请求),或者只需根据自己的喜好采用第二个链接中的代码(并将其保存到使用不同名称的自定义位置),然后在此处手动插入相关位置。

如果您想定期更新 PyTorch,我强烈推荐第二种方法,因为它不涉及直接更改 PyTorch 的代码库,并且在更新期间可能会引发错误。

于 2018-10-03T16:31:44.287 回答