从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各种语言间时间的转化实现代码
Mar 23 Python
Python中基础的socket编程实战攻略
Jun 01 Python
基于python爬虫数据处理(详解)
Jun 10 Python
Zookeeper接口kazoo实例解析
Jan 22 Python
详解python中asyncio模块
Mar 03 Python
解决Python2.7读写文件中的中文乱码问题
Apr 12 Python
python中的数据结构比较
May 13 Python
python中使用while循环的实例
Aug 05 Python
安装2019Pycharm最新版本的教程详解
Oct 22 Python
pytorch 修改预训练model实例
Jan 18 Python
python3让print输出不换行的方法
Aug 24 Python
python 制作简单的音乐播放器
Nov 25 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
jQuery中innerWidth()方法用法实例
2015/01/19 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
Django发送html邮件的方法
2015/05/26 Python
Python脚本实现虾米网签到功能
2016/04/12 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
30秒轻松实现TensorFlow物体检测
2018/03/14 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
wxPython实现整点报时
2019/11/18 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
英语自荐信常用语句
2013/12/13 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
初中地理教学反思
2016/02/19 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
logback 实现给变量指定默认值
2021/08/30 Java/Android