从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中bisect的用法
Sep 23 Python
python获取从命令行输入数字的方法
Apr 29 Python
Python中实现三目运算的方法
Jun 21 Python
浅谈Python中的闭包
Jul 08 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
Jul 13 Python
Python使用matplotlib绘制三维图形示例
Aug 25 Python
python3 批量获取对应端口服务的实例
Jul 25 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
Python高阶函数、常用内置函数用法实例分析
Dec 26 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
Feb 03 Python
python3中TQDM库安装及使用详解
Nov 18 Python
python中实现栈的三种方法
Dec 19 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做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
php数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
jquery对表单操作2
2011/04/06 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
利用谷歌地图API获取点与点的距离的js代码
2012/10/11 Javascript
javascript的内存管理详解
2013/08/07 Javascript
5种处理js跨域问题方法汇总
2014/12/04 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
jQuery+ajax读取json数据并按照价格排序示例
2018/03/28 jQuery
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
给Python初学者的一些编程技巧
2015/04/03 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
在python中修改.properties文件的操作
2020/04/08 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
python神经网络编程实现手写数字识别
2020/05/27 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
Python实现SMTP邮件发送
2020/06/16 Python
Linux如何为某个操作添加别名
2013/03/01 面试题
计算机专业自我鉴定
2013/10/15 职场文书
体育教育专业毕业生自荐信
2013/11/15 职场文书
大学毕业感言
2014/01/10 职场文书
投标承诺书范本
2014/03/27 职场文书
入党转正申请报告
2015/05/15 职场文书