Je fais référence aux modèles qui peuvent être trouvés ici: https://pytorch.org/docs/stable/torchvision/models.html#torchvision-models
Comme, @ dennlinger mentionné dans son réponse : torch.utils.model_Zoo
, est appelé en interne lorsque vous chargez un modèle pré-formé.
Plus précisément, la méthode: torch.utils.model_Zoo.load_url()
est appelée chaque fois qu'un modèle pré-formé est chargé. La documentation pour le même, mentionne:
La valeur par défaut de
model_dir
Est$TORCH_HOME/models
Où$TORCH_HOME
Est par défaut~/.torch
.Le répertoire par défaut peut être remplacé par la variable d'environnement
$TORCH_MODEL_Zoo
.
Cela peut être fait comme suit:
import torch
import torchvision
import os
# Suppose you are trying to load pre-trained resnet model in directory- models\resnet
os.environ['TORCH_MODEL_Zoo'] = 'models\\resnet' #setting the environment variable
resnet = torchvision.models.resnet18(pretrained=True)
Je suis tombé sur la solution ci-dessus en soulevant un problème dans le référentiel GitHub de PyTorch: https://github.com/pytorch/vision/issues/616
Cela a conduit à une amélioration de la documentation, c'est-à-dire la solution mentionnée ci-dessus.
Oui, vous pouvez simplement copier les URL et utiliser wget
pour les télécharger dans le chemin souhaité. Voici une illustration:
Pour AlexNet :
$ wget -c https://download.pytorch.org/models/alexnet-owt-4df8aa71.pth
Pour Google Inception (v3) :
$ wget -c https://download.pytorch.org/models/inception_v3_google-1a9a5a14.pth
Pour SqueezeNet :
$ wget -c https://download.pytorch.org/models/squeezenet1_1-f364aa15.pth
Si vous voulez le faire en Python, utilisez quelque chose comme:
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>)
P.S: Vous pouvez trouver toutes les URL de téléchargement dans les fichiers individuels python dans torchvision.models
TL; DR: Non, ce n'est pas possible directement, mais vous pouvez facilement l'adapter.
Je pense que ce que vous voulez faire est de regarder torch.utils.model_Zoo
, qui est appelé en interne lorsque vous chargez un modèle pré-formé:
Si nous regardons le code des modèles pré-formés, par exemple AlexNet ici , nous pouvons voir qu'il appelle simplement le model_Zoo
, mais sans l'emplacement enregistré. Vous pouvez soit modifier la source PyTorch pour spécifier cela (ce serait en fait un excellent ajout à l'OMI, alors peut-être ouvrir une demande de tirage pour cela), ou bien simplement adopter le code dans le deuxième lien à votre guise (et l'enregistrer dans un emplacement personnalisé sous un nom différent), puis insérez manuellement l'emplacement approprié.
Si vous souhaitez mettre à jour régulièrement PyTorch, je recommanderais fortement la deuxième méthode, car elle n'implique pas de modifier directement la base de code de PyTorch et risque de générer des erreurs lors des mises à jour.