【PyTorch】PyTorch预训练模型缓存位置迁移,也可拓展应用于其他文件的迁移

目录

前言:

一、具体实现:

二、关键技术解析

路径动态拼接

安全目录创建

环境变量魔法

迁移条件检查

三、代码实现:


前言:

当模型文件下载到本地c盘的默认路径时,可用以下代码的形式进行文件位置的迁移。

一、具体实现:

以下Python脚本完美解决上述问题,核心流程如图:

二、关键技术解析

路径动态拼接

python 复制代码
target_path = os.path.join(project_dir, "xxxx.pth")

使用os.path.join确保跨平台路径兼容性
2.

安全目录创建

python 复制代码
os.makedirs(project_dir, exist_ok=True)

exist_ok=True参数避免目录已存在时报错
3.

环境变量魔法

python 复制代码
os.environ['TORCH_HOME'] = os.path.dirname(project_dir)

通过设置TORCH_HOME永久改变缓存根目录(进程级生效)
4.

迁移条件检查

  • 源文件存在且目标文件不存在 → 执行迁移

  • 目标文件已存在 → 跳过迁移

  • 源文件不存在 → 提示下载

三、代码实现:

python 复制代码
import os
import shutil
import torch
import torchvision.models as models

# 源文件路径(你的缓存目录)
source_path = r"C:\Users\14844\.cache\torch\hub\checkpoints\xxxxx.pth"

# 目标路径(你的项目目录)
project_dir = r"E:\Pycharm\project\xxxx\models"
target_path = os.path.join(project_dir, "xxxxx.pth")

# 创建目标目录(如果不存在)
os.makedirs(project_dir, exist_ok=True)

# 移动模型文件
if os.path.exists(source_path) and not os.path.exists(target_path):
    print(f"正在将模型从 {source_path} 移动到 {target_path}...")
    shutil.move(source_path, target_path)
    print("模型移动完成!")
elif os.path.exists(target_path):
    print(f"模型已存在于 {target_path},无需移动。")
else:
    print(f"源模型文件不存在:{source_path}")
    print("请确保模型已正确下载。")

# 更新环境变量,指向新的模型位置
os.environ['TORCH_HOME'] = os.path.dirname(project_dir)

# 测试加载模型
try:
    print("\n正在测试加载模型...")
    vgg = models.vgg19(pretrained=True)
    print("模型加载成功!程序可以正常运行。")
except Exception as e:
    print(f"模型加载失败:{e}")
    print("请检查路径是否正确或尝试重新下载模型。")
相关推荐
胡斌附体11 分钟前
linux测试端口是否可被外部访问
linux·运维·服务器·python·测试·端口测试·临时服务器
视觉语言导航29 分钟前
RAL-2025 | 清华大学数字孪生驱动的机器人视觉导航!VR-Robo:面向视觉机器人导航与运动的现实-模拟-现实框架
人工智能·深度学习·机器人·具身智能
**梯度已爆炸**39 分钟前
自然语言处理入门
人工智能·自然语言处理
likeGhee1 小时前
python缓存装饰器实现方案
开发语言·python·缓存
ctrlworks1 小时前
楼宇自控核心功能:实时监控设备运行,快速诊断故障,赋能设备寿命延长
人工智能·ba系统厂商·楼宇自控系统厂家·ibms系统厂家·建筑管理系统厂家·能耗监测系统厂家
项目題供诗1 小时前
黑马python(二十五)
开发语言·python
读书点滴1 小时前
笨方法学python -练习14
java·前端·python
笑衬人心。1 小时前
Ubuntu 22.04 修改默认 Python 版本为 Python3 笔记
笔记·python·ubuntu
BFT白芙堂2 小时前
睿尔曼系列机器人——以创新驱动未来,重塑智能协作新生态(上)
人工智能·机器学习·机器人·协作机器人·复合机器人·睿尔曼机器人
蛋仔聊测试2 小时前
Playwright 中 Page 对象的常用方法详解
python