入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。
感谢【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.pydef 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啦~
欢迎大家在评论区批评指正,谢谢大家~