浅谈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 相关文章推荐
压缩包密码破解示例分享(类似典破解)
Jan 17 Python
python生成IP段的方法
Jul 07 Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
Python使用defaultdict读取文件各列的方法
May 11 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
python 读取Linux服务器上的文件方法
Dec 27 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
python 数据提取及拆分的实现代码
Aug 26 Python
解决python 读取excel时 日期变成数字并加.0的问题
Oct 08 Python
python利用xlsxwriter模块 操作 Excel
Oct 14 Python
请求模块urllib之PYTHON爬虫的基本使用
Apr 08 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
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
一个简单计数器的源代码
2006/10/09 PHP
使用php4加速网络传输
2006/10/09 PHP
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
PHP操作xml代码
2010/06/17 PHP
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
不用MOUSEMOVE也能滑动啊
2007/05/23 Javascript
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
基于JavaScript实现瀑布流布局(二)
2016/01/26 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python 开发Activex组件方法
2009/11/08 Python
python比较2个xml内容的方法
2015/05/11 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
python多进程并行代码实例
2019/09/30 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
财务会计专业毕业生自荐信
2013/10/02 职场文书
打架检讨书100字
2014/01/19 职场文书
运动会通讯稿50字
2014/01/30 职场文书
小学教师评语大全
2014/04/23 职场文书
金融管理专业求职信
2014/07/10 职场文书
2014年检验科工作总结
2014/11/22 职场文书
2016思想纪律作风整顿心得体会
2016/01/23 职场文书
jquery插件实现代码雨特效
2021/04/24 jQuery