PyTorch可以下载很多预训练好的神经网络,用起来会很方便。但是默认的下载路径是用户根目录下的.cache
文件夹。在Linux和Mac下还比较符合用户习惯,但是在windows下就是C:\Users\<username>\.cache
。不仅不符合很多windows用户的使用习惯而且不利于文件的保存。另外如果是多人共享的Linux服务器,每个用户都下载一遍这些训练好的神经网络明显是一种浪费。最好是放置在/var、/opt或者/usr/local等一类共享目录里。
但是默认情况下,PyTorch里加载模型的API是不提供修改保存位置的功能的。
# 调用方式
model = torchvision.models.resnet50(pretrained=True)
# API中对应的函数声明
torchvision.models.resnet50(pretrained=False, progress=True, **kwargs)
通过观察源代码,可以发现当pretrained
为True时,PyTorch会调用torch.utils
的load_state_dict_from_url
函数,而这个函数最终调用torch.utils.model_zoo.load_url
函数。其中的参数model_dir
就是保存的目录,这里它默认会使用环境变量TORCH_HOME
。默认情况下环境变量TORCH_HOME
的值为~/.cache
,在windows下就是%USERPROFILE%\.cache
,其中%USERPROFILE%
表示环境变量USERPROFILE
的值,默认是C:\Users\<username>
其中<username>
表示当前用户名,它对应Linux的~
。
所以我们要修改PyTorch下载文件的保存路径,只要在下载模型前,修改环境变量TORCH_HOME
的值即可。
有两种修改方法,第一种是一劳永逸地在操作系统里设置对应的环境变量。具体的方法可以自行搜索。
另一种是在代码里临时添加对应的条目,对应的代码如下,但是需要注意每次python重新启动都需要重新设置。
import os
os.environ['TORCH_HOME']='E:/Data/torch-model'
在运行上面代码之后,重新加载模型时就会在这个目录下载和加载了。
这个链接是PyTorch提供的视觉方面的神经网络列表和描述。
https://pytorch.org/docs/stable/torchvision/models.html#torchvision-models
参考资料:
https://stackoverflow.com/questions/52628270/is-there-any-way-i-can-download-the-pre-trained-models-available-in-pytorch-to-a