浅谈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进程类subprocess的一些操作方法例子
Nov 22 Python
Python中用max()方法求最大值的介绍
May 15 Python
Python http接口自动化测试框架实现方法示例
Dec 06 Python
详解python selenium 爬取网易云音乐歌单名
Mar 28 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
Sep 24 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
Feb 24 Python
Tensorflow tf.tile()的用法实例分析
May 22 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 Python
使用pth文件添加Python环境变量方式
May 26 Python
Python学习之time模块的基本使用
Jan 17 Python
4种非常实用的python内置数据结构
Apr 28 Python
关于python中readlines函数的参数hint的相关知识总结
Jun 24 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
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
2013/07/01 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
laravel框架使用阿里云短信发送消息操作示例
2020/02/15 PHP
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
javascript设置页面背景色及背景图片的方法
2015/12/29 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
NodeJs之word文件生成与解析的实现代码
2019/04/01 NodeJs
JavaScript实现消消乐的源代码
2021/01/12 Javascript
python绘制已知点的坐标的直线实例
2019/07/04 Python
python实现倒计时小工具
2019/07/29 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
python爬取天气数据的实例详解
2020/11/20 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers