从Pytorch模型pth文件中读取参数成numpy矩阵的操作


Posted in Python onMarch 04, 2021

目的:

把训练好的pth模型参数提取出来,然后用其他方式部署到边缘设备。

Pytorch给了很方便的读取参数接口:

nn.Module.parameters()

直接看demo:

from torchvision.models.alexnet import alexnet 
model = alexnet(pretrained=True).eval().cuda()
parameters = model.parameters()
for p in parameters:
  numpy_para = p.detach().cpu().numpy()
  print(type(numpy_para))
  print(numpy_para.shape)

上面得到的numpy_para就是numpy参数了~

Note:

model.parameters()是以一个生成器的形式迭代返回每一层的参数。所以用for循环读取到各层的参数,循环次数就表示层数。

而每一层的参数都是torch.nn.parameter.Parameter类型,是Tensor的子类,所以直接用tensor转numpy(即p.detach().cpu().numpy())的方法就可以直接转成numpy矩阵。

方便又好用,爆赞~

补充:pytorch训练好的.pth模型转换为.pt

将python训练好的.pth文件转为.pt

import torch
import torchvision
from unet import UNet
model = UNet(3, 2)#自己定义的网络模型
model.load_state_dict(torch.load("best_weights.pth"))#保存的训练模型
model.eval()#切换到eval()
example = torch.rand(1, 3, 320, 480)#生成一个随机输入维度的输入
traced_script_module = torch.jit.trace(model, example)
traced_script_module.save("model.pt")

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
Python中用sleep()方法操作时间的教程
May 22 Python
Python第三方库的安装方法总结
Jun 06 Python
python3模块smtplib实现发送邮件功能
May 22 Python
pyqt5实现俄罗斯方块游戏
Jan 11 Python
Python Pillow Image Invert
Jan 22 Python
Python实现二叉树的常见遍历操作总结【7种方法】
Mar 06 Python
Python实现图片识别加翻译功能
Dec 26 Python
flask框架url与重定向操作实例详解
Jan 25 Python
Python列表list操作相关知识小结
Jan 29 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
Feb 20 Python
pycharm无法导入lxml的解决办法
Mar 31 Python
详解Python类和对象内容
Jun 22 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 #Python
python 求两个向量的顺时针夹角操作
Mar 04 #Python
python 制作磁力搜索工具
Mar 04 #Python
python抢购软件/插件/脚本附完整源码
Mar 04 #Python
Python 求向量的余弦值操作
Mar 04 #Python
django使用多个数据库的方法实例
Mar 04 #Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 #Python
You might like
PHP - Html Transfer Code
2006/10/09 PHP
PHP 中的批处理的实现
2007/06/14 PHP
php 读取文件乱码问题
2010/02/20 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
js常用代码段整理
2011/11/30 Javascript
Prototype源码浅析 Enumerable部分之each方法
2012/01/16 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
vue 组件中slot插口的具体用法
2018/04/03 Javascript
angular6.0开发教程之如何安装angular6.0框架
2018/06/29 Javascript
Vue配置marked链接添加target="_blank"的方法
2019/07/19 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
django echarts饼图数据动态加载的实例
2019/08/12 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
好的自荐信的要求
2013/10/30 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
英语教师求职信范文
2015/03/20 职场文书
《折线统计图》教学反思
2016/02/22 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
vscode中使用npm安装babel的方法
2021/08/02 Javascript