pth 文件的功能因场景而异,主要分为 Python 路径管理和
PyTorch 模型存储两类:
- 本质:纯文本文件,每行存储一个模块路径。
- 核心作用:
- 自动添加路径到
sys.path,无需手动设置PYTHONPATH,简化模块导入;
- 集中管理共享模块路径,方便多项目复用和模块分发;
- 清晰整理复杂项目的路径结构,提升代码可读性。
- 本质:二进制文件,通过
pickle序列化存储模型参数。
- 核心作用:
- 保存模型训练后的权重参数(
state_dict)及训练状态(如 epoch、准确率);
- 便于模型分享、部署和后续加载继续训练或推理。
-
文本编辑器直接打开:
用记事本、Notepad++、Sublime 等工具打开,可直接查看或编辑路径列表(每行一个路径)。
-
Python 代码读取:
通过文件操作函数读取路径内容,示例:
with open("module_paths.pth", "r") as f:
paths = f.readlines()
print(paths)
-
PyTorch 代码加载:
使用torch.load()函数加载模型权重,示例:
import torch
from torchvision.models import resnet18
model_weights = torch.load("resnet18_weights.pth")
model = resnet18()
model.load_state_dict(model_weights)
model.eval()
-
可视化工具查看:
用 Netron、TensorBoard 等工具打开,可直观查看模型结构和权重分布。
-
乱码问题:
因编码格式不符导致,解决方案:在文本
编辑器中切换编码(如 UTF-8、GBK)。
-
路径无效问题:
相对路径需以 pth 文件所在目录为基准,建议使用绝对路径避免导入错误。
-
“No module named 'torch'” 错误:
原因:未激活安装 PyTorch 的环境,解决方案:
conda activate pytorch_env
-
版本不兼容问题:
原因:模型保存时的 PyTorch 版本与当前版本差异过大,解决方案:
- 安装与模型匹配的 PyTorch 版本;
- 查阅官方文档适配废弃 API,替换为等效新接口。
需求:让任意脚本可导入/home/user/mymodule目录下的自定义模块。
步骤:
- 创建
custom_paths.pth文件,写入路径:/home/user/mymodule;
- 将 pth 文件放入 Python 的
site-packages目录(可通过print(sys.path)查找该目录位置);
- 重启 Python 后,直接通过
import mymodule导入模块,无需手动添加路径。
需求:训练 ResNet18 模型后保存权重,供后续推理使用。
步骤:
- 训练完成后保存权重:
torch.save(model.state_dict(), "resnet18_trained.pth")
- 后续加载并推理:
model = resnet18()
model.load_state_dict(torch.load("resnet18_trained.pth"))
model.eval()
pth 文件在 Python 和 PyTorch 中分别承担路径管理和模型存储的核心角色。Python 场景下,它简化模块导入;PyTorch 场景下,它是模型生命周期管理的关键载体。掌握文本编辑(路径 pth)与
torch.load()(模型 pth)的使用方法,规避编码、路径、版本兼容等问题,能显著提升开发效率。无论是多项目模块共享还是深度学习模型部署,pth 文件都是不可或缺的
实用工具。