浅谈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标准库之循环器(itertools)介绍
Nov 25 Python
OpenCV-Python实现轮廓检测实例分析
Jan 05 Python
python3实现公众号每日定时发送日报和图片
Feb 24 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
django session完成状态保持的方法
Nov 27 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 Python
python里 super类的工作原理详解
Jun 19 Python
Python3 列表,数组,矩阵的相互转换的方法示例
Aug 05 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
Mar 31 Python
Python操作Jira库常用方法解析
Apr 10 Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
初学PHP的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
一个简单的js动画效果代码
2010/07/20 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
js对象的复制继承实例
2015/01/10 Javascript
AngularJs ng-route路由详解及实例代码
2016/09/14 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
从零学Python之入门(二)基本数据类型
2014/05/25 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
为什么是 Python -m
2020/06/19 Python
想学画画?python满足你!
2020/12/24 Python
亚马逊中国官方网站:amazon.cn
2017/05/25 全球购物
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
户外活动总结范文
2014/04/30 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
企业总经理任命书
2014/06/05 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
亮剑精神观后感
2015/06/05 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL
golang生成并解析JSON
2022/04/14 Golang
SQL Server中使用表变量和临时表
2022/05/20 SQL Server