欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

pytorch加载torchvision中预训练好的模型时,更改模型保存地址

时间:2023-04-26

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。

感谢【Pytorch】加载torchvision中预训练好的模型并修改默认下载路径(使用models.__dict__[model_name]()读取) - 灰信网(软件开发博客聚合)

今天我在执行这行代码时,它开始给我把resnet101的预训练模型下载安装在我的C盘里!!!

model = getattr(models, backbone)(pretrained)

可是我的C盘已经要这样了

所以我想给他更改一下它的默认保存途径,方法——改源码


因为我下载的是resnet101,所以我去找resnet.py的源码。

1、查找安装环境的默认所在路径

那么如何能找到自己的那些环境的包放在哪呢?

来,进行一波操作

conda list

这样在最前面我们就可以看到

packages in environment xxxxx

这个xxx就是你安装环境的地址

2、找到其中的torchvision包,进而找源码

resnet.py的源码的位置应该在这个xxx加上/lib/python3.7/site-packages/torchvision/models/里面

model_urls = { 'resnet18': 'https://download.pytorch.org/models/resnet18-5c106cde.pth', 'resnet34': 'https://download.pytorch.org/models/resnet34-333f7ec4.pth', 'resnet50': 'https://download.pytorch.org/models/resnet50-19c8e357.pth', 'resnet101': 'https://download.pytorch.org/models/resnet101-5d3b4d8f.pth', 'resnet152': 'https://download.pytorch.org/models/resnet152-b121ed2d.pth',}

def resnet101(pretrained=False, **kwargs): """Constructs a ResNet-101 model. Args: pretrained (bool): If True, returns a model pre-trained on ImageNet """ model = ResNet(Bottleneck, [3, 4, 23, 3], **kwargs) if pretrained: model.load_state_dict(model_zoo.load_url(model_urls['resnet101'])) return model

可以看到这个下载安装是由model_zoo.load_url()所决定的,赶紧康康他在哪

import torch.utils.model_zoo as model_zoo

好嘞~顺藤摸瓜

3、找到torch包中的model_zoo.py

位置应该在这个xxx加上/lib/python3.7/site-packages/torch/utils/里的model_zoo.py

很好只有一条线索,省得我去找(bushi

from torch.hub import tqdm, load_state_dict_from_url as load_url # noqa: F401

load_url就是load_state_dict_from_url,在torch.hub里

4、找到torch包中的hub.py

def load_state_dict_from_url(url, model_dir=None, map_location=None, progress=True, check_hash=False, file_name=None):

分析代码发现安装的路径是由model_dir决定的,所以我们把model_dir=None中的None改成你想要的安装地址,就OK啦~


欢迎大家在评论区批评指正,谢谢大家~

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。