浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
我们经常会看到后缀名为.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下。
暂时添加:
importsys
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的区别及模型保存方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。