浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式


Posted in Python onMay 25, 2020

我们经常会看到后缀名为.pt, .pth, .pkl的pytorch模型文件,这几种模型文件在格式上有什么区别吗?

其实它们并不是在格式上有区别,只是后缀不同而已(仅此而已),在用torch.save()函数保存模型文件时,各人有不同的喜好,有些人喜欢用.pt后缀,有些人喜欢用.pth或.pkl.用相同的torch.save()语句保存出来的模型文件没有什么不同。

在pytorch官方的文档/代码里,有用.pt的,也有用.pth的。一般惯例是使用.pth,但是官方文档里貌似.pt更多,而且官方也不是很在意固定用一种。

模型保存与调用方式一:

保存:

torch.save(model.state_dict(), mymodel.pth)#只保存模型权重参数,不保存模型结构

调用:

model = My_model(*args, **kwargs) #这里需要重新模型结构,My_model
model.load_state_dict(torch.load(mymodel.pth))#这里根据模型结构,调用存储的模型参数
model.eval()

模型保存与调用方式一:

保存:

torch.save(model, mymodel.pth)#保存整个model的状态

调用:

model=torch.load(mymodel.pth)#这里已经不需要重构模型结构了,直接load就可以
model.eval()

补充知识:关于python 导入包 .pth文件

Python在遍历已知的库文件目录过程中,如果见到一个.pth 文件,就会将文件中所记录的路径加入到 sys.path 设置中,于是 .pth 文件说指明的库也就可以被 Python 运行环境找到了。

python中有一个.pth文件,该文件的用法是:

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

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

*******************************************

有时,在用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的区别及模型保存方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3里的super()和__class__使用介绍
Apr 23 Python
NumPy.npy与pandas DataFrame的实例讲解
Jul 09 Python
python实现字符串中字符分类及个数统计
Sep 28 Python
python实现多层感知器
Jan 18 Python
运用Python的webbrowser实现定时打开特定网页
Feb 21 Python
Python3批量生成带logo的二维码方法
Jun 24 Python
在Python中表示一个对象的方法
Jun 25 Python
在Python中使用filter去除列表中值为假及空字符串的例子
Nov 18 Python
在Keras中利用np.random.shuffle()打乱数据集实例
Jun 15 Python
Python使用文件操作实现一个XX信息管理系统的示例
Jul 02 Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 01 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
Apr 13 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
May 25 #Python
tensorflow pb to tflite 精度下降详解
May 25 #Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 #Python
python用opencv完成图像分割并进行目标物的提取
May 25 #Python
Pytorch转tflite方式
May 25 #Python
Python HTMLTestRunner库安装过程解析
May 25 #Python
Anaconda+vscode+pytorch环境搭建过程详解
May 25 #Python
You might like
PHP SEO优化之URL优化方法
2011/04/21 PHP
javascript 操作文件 实现方法小结
2009/07/02 Javascript
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
jquery中EasyUI实现同步树
2015/03/01 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
2015/12/08 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
2016/09/14 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
2018/09/28 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
Python文件的读写和异常代码示例
2017/10/31 Python
python使用生成器实现可迭代对象
2018/03/20 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
师范生实习的个人自我鉴定
2013/10/20 职场文书
村优秀党员事迹材料
2014/01/15 职场文书
团日活动策划书
2014/02/01 职场文书
青年文明号汇报材料
2014/12/23 职场文书
微观世界观后感
2015/06/10 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书
Python连续赋值需要注意的一些问题
2021/06/03 Python
用Python创建简易网站图文教程
2021/06/11 Python