当前位置: 首页 > 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.dtcms.com/a/266790.html

相关文章:

  • HTTP协议利用TCP的特性来实现长连接
  • Compose笔记(三十)--图片选择器
  • 【Spring Boot】HikariCP 连接池 YAML 配置详解
  • 洛谷P1941 [NOIP 2014 提高组] 飞扬的小鸟
  • vue3 获取选中的el-table行数据
  • MySQL 查询进阶指南:子查询、多表连接与 UNION 操作全解析
  • SQL 快速参考手册-SQL001
  • Swagger 安装使用教程
  • 高效的在Vue3中使用Vuex
  • Android-自定义View的实战学习总结
  • python训练day49 CBAM
  • 流程分类框架体系设计应该梳理到L5还是L6?
  • DePIN 普惠结构的缺失拼图,为什么是 UBI Network?
  • js中的捕获阶段和冒泡阶段
  • vue2/3安装依赖报错,终极解决方案
  • Kuberrnetes 服务发布
  • 【MySQL】十六,MySQL窗口函数
  • Mint密室 · 猫猫狐狐的“特征选择”囚室逃脱
  • Ubuntu下的Tomcat服务器部署
  • Linux基础 -- NAND Flash UBIFS基础特性及注意点
  • 【沉浸式解决问题】idea开发中mapper类中突然找不到对应实体类
  • 【Agent】构建专家级SQL Agent交互
  • Qt控件核心属性全解析
  • 【Bluedroid】 BLE 隐私保护机制深度剖析(btm_ble_reset_id)
  • [学习记录]Unity-Shader-曲面细分着色器
  • IDEA-常用的开发组件
  • 用户进程的借壳挂靠之术
  • JAVA-springboot 整合Redis
  • 大数据在UI前端的应用创新研究:基于图神经网络的用户关系网络分析
  • [C++] C++多重继承:深入解析复杂继承关系