浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式 pth中的路径加载使用

首先xxx.pth文件里面会书写一些路径,一行一个。

将xxx.pth文件放在特定位置,则可以让python在加载模块时,读取xxx.pth中指定的路径。

Python客栈送红包、纸质书


有时,在用import导入项目文件夹里自己写的python文件时,常常说找不到该文件,这时可以将项目路径添加到PYTHONPATH下。

暂时添加:

import sys
sys.path.append(项目路径)

这种方法只会存在内存里,一旦退出python就没有了

一劳永逸:

在 XXX/pythonXXX/site-packages/ (python 包安装路径) 下新建后缀为 .pth的文件,在其中加入你的项目路径,比如

K:\Desktop\face_detect\DFace-win64-master\src
K:\Desktop\face_detect\DFace-win64-master\src\core


有时候我们正在修改或调试的程序会是一个库,为修改方便,我们可能不大希望把它放到 site-packages 下面,而是更愿意把它保留在原始的工程目录中,以方便 IDE 和版本控制工具进行管理。那么怎么能让 Python 运行环境找到这个库呢?

原理上, Python 运行环境查找库文件时本质是对 sys.path 列表的遍历,如果我们想给运行环境注册新的类库进来,

要么得用代码给 sys.path 列表增加新路径;

要么得调整 PYTHONPATH 环境变量;

要么就得把库文件复制到已经在 sys.path 设置中的路径中去(比如 site-packages 目录);

这些方法都不够方便。最简单的办法是用 .pth 文件来实现。Python 在遍历已知的库文件目录过程中,如果见到一个 .pth 文件,就会将文件中所记录的路径加入到 sys.path 设置中,于是 .pth 文件说指明的库也就可以被 Python 运行环境找到了。

其实,easy_install 所依赖的 egg 包安装就是靠 site-packages 目录下的 .pth 文件添加对 egg 包的引用实现的。所以修改对应的 .pth 文件内容,就可以实现对 egg 包的卸载。

以上这篇浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

https://www.jb51.net/article/187269.htm

### PyTorch `.pth` Python `.pkl` 模型保存格式的区别 #### 文件扩展名的意义 `.pth` 是一种常见的用于存储PyTorch模型及其状态字典的文件格式。这种格式通常用来保存整个模型的状态,包括权重其他必要的元数据[^1]。 另一方面,`.pkl` 文件通常是通过Python标准库中的 `pickle` 序列化模块创建的对象序列化的结果。虽然可以使用此方法来保存PyTorch模型,但在实践中更推荐使用专门设计给PyTorch使用的接口如 `torch.save()` 函数[^2]。 #### 技术实现上的差异 当涉及到具体的技术细节时,在PyTorch中无论是采用 `.pth` 还是 `.pkl` 扩展名,实际上都是调用了相同的底层机制——即 `torch.save()` 方法进行对象持久化操作。因此从技术层面讲两者之间并没有本质性的差别;主要的不同在于约定俗成的应用习惯以及社区对于特定扩展名的认可度上[^4]。 ```python import torch from collections import OrderedDict # 假设 model 是一个已经训练好的 PyTorch 模型实例 state_dict = model.state_dict() # 使用 .pth 作为扩展名保存模型参数 torch.save(state_dict, 'model_weights.pth') # 或者也可以选择其他扩展名比如 .pkl 来做同样的事情 torch.save(state_dict, 'model_weights.pkl') ``` #### 实际应用中的建议 尽管可以在理论上互换使用这两种格式,但为了保持一致性并遵循最佳实践指南,应该优先考虑按照官方文档所提倡的方式命名文件。也就是说: - 对于仅包含网络层定义而不含任何额外信息的情况,应选用 `.pt`; - 如果要连同优化器设置等一起打包,则更适合用 `.pth` 表明这是一个完整的checkpoint而非单纯的数据结构体; - 非特殊情况不鼓励直接利用通用目的性强得多的Pickle协议(.pkl),除非确实有必要处理复杂自定义类实例或其他不适合简单二进制流表示的内容[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值