当前位置: 首页 > news >正文

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

目录

前言:

一、具体实现:

二、关键技术解析

路径动态拼接

安全目录创建

环境变量魔法

迁移条件检查

三、代码实现:


前言:

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

一、具体实现:

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

二、关键技术解析

  1. 路径动态拼接

    target_path = os.path.join(project_dir, "xxxx.pth")

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

  2. 安全目录创建

    os.makedirs(project_dir, exist_ok=True)

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

  3. 环境变量魔法

    os.environ['TORCH_HOME'] = os.path.dirname(project_dir)

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

  4. 迁移条件检查

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

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

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

三、代码实现:

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("请检查路径是否正确或尝试重新下载模型。")

http://www.lryc.cn/news/580127.html

相关文章:

  • 基于PHP+MySQL实现(Web)英语学习与测试平台
  • 408第三季part2 - 计算机网络 - 计算机网络基本概念
  • 金融平衡术:创新与合规的突围之路
  • Spark从入门到实战:安装与使用全攻略
  • 使用 DigitalPlat 免费搭配 Cloudflare Tunnel 实现飞牛系统、服务及 SSH 内网穿透教程
  • Java SE--方法的使用
  • Kotlin中优雅的一行行读取文本文件
  • 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
  • 【笔记】PyCharm 2025.2 EAP 创建 Poetry 和 Hatch 环境的踩坑实录与反馈
  • 三体融合实战:Django+讯飞星火+Colossal-AI的企业级AI系统架构
  • Android WebView 性能优化指南
  • 《Java修仙传:从凡胎到码帝》第三章:缩进之劫与函数峰试炼
  • React Ref使用
  • React中的useState 和useEffect
  • 指环王英文版魔戒再现 Part 1 Chapter 01
  • 力扣 hot100 Day34
  • [Linux]内核态与用户态详解
  • java web5(黑马)
  • Vue内置指令
  • 一、react18+项目初始化(vite)
  • 支付宝小程序关键词排名实战攻略,从0到1的突破之路
  • 八股学习(三)---MySQL
  • Spring AI Alibaba 来啦!!!
  • 【网络与系统安全】强制访问控制——BLP模型
  • Redis基础(5):Redis的Java客户端
  • 马尔可夫链:随机过程的记忆法则与演化密码
  • 【github】想fork的项目变为私有副本
  • WPF学习笔记(23)Window、Page与Frame、ViewBox
  • WPF+HelixToolkit打造炫酷自定义3D贴图立方体盒子模型
  • 简单 Python 爬虫程序设计