从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从sqlite读取并显示数据的方法
May 08 Python
利用python批量给云主机配置安全组的方法教程
Jun 21 Python
python使用itchat实现手机控制电脑
Feb 22 Python
VSCode下好用的Python插件及配置
Apr 06 Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 Python
基于python中theano库的线性回归
Aug 31 Python
Python实现简易过滤删除数字的方法小结
Jan 09 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
Django框架使用mysql视图操作示例
May 15 Python
python是否适合网页编程详解
Oct 04 Python
python logging通过json文件配置的步骤
Apr 27 Python
python实现三阶魔方还原的示例代码
Apr 28 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
用文本文件制作留言板提示(下)
2006/10/09 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
php简单实现数组分页的方法
2016/04/30 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
2014/05/23 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
Python实现简单过滤文本段的方法
2017/05/24 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
通过Python实现一个简单的html页面
2020/05/16 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
快速创建python 虚拟环境
2020/11/28 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
顺丰快递Java软件工程师面试题
2015/07/31 面试题
个人实用简单的自我评价
2013/10/19 职场文书
艺术应用与设计个人的自我评价
2013/11/23 职场文书
加工操作管理制度
2014/01/19 职场文书
社区道德讲堂实施方案
2014/03/21 职场文书
护士个人年度总结范文
2015/02/13 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS