浅谈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中set使用
Jun 30 Python
Python DataFrame 设置输出不显示index(索引)值的方法
Jun 07 Python
Tensorflow 实现修改张量特定元素的值方法
Jul 30 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 Python
用Python PIL实现几个简单的图片特效
Jan 18 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
Nov 30 Python
TensorFlow绘制loss/accuracy曲线的实例
Jan 21 Python
Django ValuesQuerySet转json方式
Mar 16 Python
浅谈python出错时traceback的解读
Jul 15 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 07 Python
Django框架之路由用法
Jun 10 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函数)
2006/10/09 PHP
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
利用php输出不同的心形图案
2016/04/22 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
javascript 写类方式之五
2009/07/05 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
jquery 实现两Select 标签项互调示例代码
2014/09/25 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
一年级学生评语
2014/04/23 职场文书
2014年污水处理厂工作总结
2014/12/19 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android
阿里云日志过滤器配置日志服务
2022/04/09 Servers
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js
SQL Server中搜索特定的对象
2022/05/25 SQL Server