浅谈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 相关文章推荐
python中enumerate函数遍历元素用法分析
Mar 11 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
Mar 05 Python
Python3.6.0+opencv3.3.0人脸检测示例
May 25 Python
windows下python和pip安装教程
May 25 Python
对python GUI实现完美进度条的示例详解
Dec 13 Python
Python设计模式之状态模式原理与用法详解
Jan 15 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
python操作yaml说明
Apr 08 Python
python 如何设置守护进程
Oct 29 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 Python
Python 中random 库的详细使用
Jun 03 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
form表单转Json提交的方法(推荐)
2016/09/23 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
2019/04/02 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
世界上最大的二手相机店:KEN
2017/05/17 全球购物
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
介绍一下linux的文件权限
2012/02/15 面试题
中专毕业生求职简历的自我评价
2013/10/21 职场文书
学生打架检讨书
2014/02/14 职场文书
环保守法证明
2015/06/24 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js