浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式

作者:wanghua609 时间:2023-11-25 12:41:38 

我们经常会看到后缀名为.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 包的卸载。

来源:https://blog.csdn.net/weixin_38145317/article/details/103582549

标签:pytorch,.pt,.pth,.pkl
0
投稿

猜你喜欢

  • Python多线程编程之threading模块详解

    2023-12-28 07:52:59
  • python开发之IDEL(Python GUI)的使用方法图文详解

    2023-09-15 23:22:42
  • Python实现RLE格式与PNG格式互转

    2021-07-11 18:23:19
  • 使用django的objects.filter()方法匹配多个关键字的方法

    2022-04-08 06:11:20
  • Pytorch 实现变量类型转换

    2021-09-27 23:35:47
  • python基于SMTP发送QQ邮件

    2023-04-07 21:11:51
  • c#数据库与TXT导入导出的实例

    2024-01-24 06:34:16
  • 浅谈Vue3 defineComponent有什么作用

    2024-05-05 09:25:03
  • 如何动态产生变量?

    2009-11-18 16:33:00
  • Pytorch如何切换 cpu和gpu的使用详解

    2023-08-22 03:30:11
  • javascript实现rgb颜色转换成16进制格式

    2024-04-18 09:33:58
  • python处理大日志文件

    2021-11-09 22:21:14
  • Python datatime库语法使用详解

    2022-01-30 03:16:17
  • insert...on duplicate key update语法详解

    2024-01-19 11:43:55
  • sql语句将数据库一条数据通过分隔符切割成多列方法实例

    2024-01-15 02:24:45
  • 如何在ASP里面创建GUID

    2008-01-08 19:13:00
  • golang指数运算操作

    2024-01-30 22:35:53
  • 网络基础-数据包

    2022-11-24 21:48:10
  • 对python使用http、https代理的实例讲解

    2022-03-13 00:03:08
  • 基于Python实现的ID3决策树功能示例

    2021-10-24 07:57:24
  • asp之家 网络编程 m.aspxhome.com