You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ResNet50迁移学习时遇PyTorch权限错误求助

解决PyTorch预训练模型加载的PermissionError问题

你遇到的核心问题很明确:PyTorch默认会把预训练模型存到系统根目录的/.torch文件夹,但普通用户没有这个目录的写入权限,再加上你的环境里没装sudo命令,所以这条路走不通。下面给你几个简单可行的解决方案:

方案一:通过环境变量指定模型存储目录

这是最省心的方法,只需要在代码开头加几行,指定一个你有权限读写的目录(比如自己用户目录下的.torch文件夹,或者当前项目里新建的文件夹):

import os
# 替换成你实际有权限的路径,比如/home/你的用户名/.torch,或者./torch_models(当前项目目录下)
os.environ['TORCH_HOME'] = '/home/your_username/.torch'

# 之后正常加载模型就行
import torchvision.models as models
model = models.resnet50(pretrained=True)

设置好TORCH_HOME后,PyTorch就会自动把预训练模型下载到你指定的目录,再也不会去碰根目录了。

方案二:手动指定模型加载目录

如果你不想修改环境变量,也可以直接在加载权重时指定存储路径。因为models.resnet50(pretrained=True)内部会调用model_zoo.load_url,我们可以拆成手动加载的步骤:

import torchvision.models as models
from torch.utils.model_zoo import load_url

# 先初始化不带预训练权重的模型
model = models.resnet50(pretrained=False)
# 指定你有权限的文件夹作为模型存储路径
state_dict = load_url(
    'https://download.pytorch.org/models/resnet50-19c8e357.pth',
    model_dir='/path/to/your/available/folder'
)
# 把权重加载到模型里
model.load_state_dict(state_dict)

为什么不建议用sudo?

你尝试用sudo但提示找不到命令,一方面是当前环境没装sudo工具;更重要的是,就算能用sudo,用root权限运行脚本会让下载的模型文件归root所有,后续你用普通用户运行时还是会有权限问题,而且root的Python依赖和你当前的conda环境大概率不一致,容易引发更多麻烦,所以完全没必要走这条路。

内容的提问来源于stack exchange,提问作者sigmoid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:28:10