浅谈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操作MySQL数据库的方法分享
May 29 Python
python编写爬虫小程序
May 14 Python
java中两个byte数组实现合并的示例
May 09 Python
Python datetime和unix时间戳之间相互转换的讲解
Apr 01 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
python实现密码验证合格程序的思路详解
Jun 01 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 Python
Autopep8的使用(python自动编排工具)
Mar 02 Python
Django migrate报错的解决方案
May 20 Python
Python基础之函数嵌套知识总结
May 23 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
简单易用的计数器(数据库)
2006/10/09 PHP
php 时间计算问题小结
2009/01/04 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
PHP二维索引数组的遍历实例分析【2种方式】
2019/06/24 PHP
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
一分钟理解js闭包
2016/05/04 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
详解vue数据渲染出现闪烁问题
2017/06/29 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
Python实现的视频播放器功能完整示例
2018/02/01 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
Python检测数据类型的方法总结
2019/05/20 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
CSS3圆角和渐变2种常用功能详解
2016/01/06 HTML / CSS
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
日本订房网站,预订日本星级酒店/温泉旅馆:Relux(支持中文)
2020/01/03 全球购物
车辆维修工自我评价怎么写
2013/09/20 职场文书
护士的岗位职责
2013/12/04 职场文书
房地产促销活动方案
2014/03/01 职场文书
决心书标准格式
2014/03/11 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
实施意见格式范本
2015/06/05 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
关于maven依赖 ${xxx.version}报错问题
2022/01/18 Java/Android