Есть ли способ загрузить предварительно обученные модели, доступные в PyTorch, по определенному пути? - PullRequest
0 голосов
/ 03 октября 2018

Я имею в виду модели, которые можно найти здесь: https://pytorch.org/docs/stable/torchvision/models.html#torchvision-models

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Да, вы можете просто скопировать URL-адреса и использовать wget, чтобы загрузить их по нужному пути.Вот иллюстрация:

Для AlexNet :

$ 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

Если вы хотите сделать это в 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: вы можете найти всеURL загрузки в отдельных файлах Python в torchvision.models

0 голосов
/ 12 октября 2018

As, @ 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's GitHub: https://github.com/pytorch/vision/issues/616

Это привело к улучшению документации, то есть решению, упомянутому выше.

0 голосов
/ 03 октября 2018

TL; DR: Нет, это невозможно напрямую, но вы можете легко адаптировать его.

Я думаю, что вы хотите сделать, это посмотреть на torch.utils.model_zoo, чтовызывается изнутри, когда вы загружаете предварительно обученную модель:

Если мы посмотрим на код для предварительно обученных моделей, например, AlexNet здесь , то увидим, что он просто вызываетранее упомянутая функция model_zoo, но без сохраненного местоположения.Вы можете либо изменить исходный код PyTorch, чтобы указать это (на самом деле это было бы отличным дополнением IMO, так что, возможно, открыть запрос на извлечение для этого), либо просто принять код во второй ссылке по своему вкусу (и сохранить его впользовательское местоположение под другим именем), а затем вручную вставьте туда соответствующее местоположение.

Если вы хотите регулярно обновлять PyTorch, я настоятельно рекомендую второй метод, поскольку он не предусматривает непосредственное изменение базы кода PyTorch.и, возможно, выбрасывать ошибки во время обновлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...