Pytorch 提取权重等参数 写入Excel

2023-11-01

Pytorch 提取权重等参数 写入Excel表

标签 : Pytorch

Topic : 网络参数导出

时间 :2022 / 5 / 27


写在最前:

​ 最近有在做量化相关的东西,不确定是不是我这边没设置好怎么,量化后只给出了相应层的s、z值,这里就需要将网络中的参数导出进行再处理。

  • 网络保存格式 : pth
  • 参数保存格式 : 字典 dict

问题:

​ 直接打印某层参数或转换为字符串写入txt中 :当参数多时,显示不完全,无法得到层内所有参数。

  • 整体思路 : 将字典中tensor类型变量转换成numpy array形式,然后存储到表格中。

需要用到的Python库:

  • pytorch
  • pandas
  • numpy
  • openpyxl

源代码参考自 : pytorch 提取权重_获取Pytorch中间某一层权重或者特征的例子_闲吟客的博客-CSDN博客

## 导入必要的库
import torch
import pandas as pd
import numpy as np

## 参数存入parm字典中,同时tensor类型变量转换成numpy array
parm={}
for name,parameters in resnet18.named_parameters():
	print(name,':',parameters.size())
	parm[name]=parameters.detach().numpy()

## 查看某一层参数
print (parm['layer1.0.conv1.weight'])

## 定义导出函数
def parm_to_excel(excel_name,key_name,parm):
	with pd.ExcelWriter(excel_name) as writer:
	[output_num,input_num,filter_size,_]=parm[key_name].size()
	for i in range(output_num):
		for j in range(input_num):
			data=pd.DataFrame(parm[key_name][i,j,:,:].detach().numpy())
			#print(data)
			data.to_excel(writer,index=False,header=True,startrow=i*(filter_size+1),startcol=j*filter_size)

## 写入test1.xlsx
counter=1
with pd.ExcelWriter('test1.xlsx') as writer:
	for key in parm_resnet50.keys():
		data=parm_resnet50[key].reshape(-1,1)
		# data=data[data>0.001]
		data=pd.DataFrame(data,columns=[key])
		data.to_excel(writer,index=False,startcol=counter)
		counter+=1
            
## 获取中间层的输出  此处仅供参考
def modelnet(net,input_data):
	x = net.conv1(input_data)
	x = net.bn1(x)
	x = F.relu(x)
	x = net.layer1(x)
	x = net.layer2(x)
	x = net.layer3(x)
	x = net.layer4[0].conv1(x) 
    x=x.view(x.shape[0],-1)
	return x

model = mymodel()
x = modelnet(model,input_data)

参考文献 :

pytorch 提取权重_获取Pytorch中间某一层权重或者特征的例子_闲吟客的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pytorch 提取权重等参数 写入Excel 的相关文章

随机推荐

  • 老猿Python部分代码样例

    专栏 Python基础教程目录 专栏 使用PyQt开发图形界面Python应用 专栏 PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 PyQt编程实战 通过eventFilter监视QScrollArea的widget 的P
  • Vue3 基础语法

    文章目录 1 创建Vue项目 1 1创建项目 1 2 初始项目 2 vue3 语法 2 1 复杂写法 2 2 简易写法 2 3 reactive 对象类型 2 4 ref 简单类型 2 5 computed 计算属性 2 6 watch 监
  • python并发编程学习笔记--初识多线程 day01

    请求网页信息 blog spider py import requests 生成列表 from bs4 import BeautifulSoup urls f http www cnblogs com p page f https www
  • AD20——批量快速放置元件管脚

    在使用Altium Designer 20创建元件库时 对于管脚较多的元件可采用批量放置的操作以节省时间 具体操作如下 1 首先放置第1个管脚 选中该管脚并Ctrl C将其复制 2 点击编辑 E gt 阵列式粘贴 Y 弹出如下界面 参数说明
  • android中的(singleLine)单行显示 none start middle

    http www cnblogs com firecode archive 2012 04 23 2466711 html 第一个button 什么都没写 后面省略号 android ellipsize none none就没有省略号了 a
  • QT5.12编译安装

    1 引言 QT是一个跨平台的编译软件 本文将介绍在linux内核操作系统下对于QT5 12的编译安装过程及QT编译程序的配置过程 2 编译安装 2 1 下载源码 推荐使用国内镜像网站下载 国内著名的几个 Qt 镜像网站 中国科学技术大学 h
  • 【ZJCPC2023 第20届 浙江省赛】赛后总结

    感叹 线下比赛环境挺不错的 可以白嫖杭师大一天的饭 还有传统的气球环节 看到别人AC了6道题手上抓着6个气球出考场就大受震撼 尤其是中学生的打星队 实际情况 由于本科和专科分开评奖 所以看起来二本那些落后的 没有教练的学生给人的刻板印象就是
  • 跟我一起写 Makefile(六)

    跟我一起写 Makefile 六 本文来自于CSDN 陈皓博主 网址http blog csdn net haoel article details 2891 详细内容请参考其经典文章 跟我一起写makefile 陈皓
  • 链表面试常见题目

    1 反转链表 头插法 2 合并两个有序链表 3 链表倒数第k个节点 连个节点一个先走 k步 然后两个一起走 走到第一个节点 next为null 4 从尾到头打印 链表 借助栈或者递归 5 复杂链表复制 1 借助map存储 O n 空间 2
  • 串口字符串-HEX格式

    介绍 串口通信过程中 通常涉及一个数据的模拟过程以及数据发送过程 一般来说 我们会发送一串指令给下位机 68 05 00 84 01 02 03 例如这种 我们明白 这是我们 将相应的字符转换成 hex 字符显示 用于表示ascii 字母的
  • @Transactional 失效问题

    Transactional配置起来是简单方便 但是坑也相当多 下面就记录下这些坑 1 service类标签添加在了接口上 查阅资料说接口的方法上可以加也不建议这样用 但实际中这么出现事务失效 2 Transactional 注解只能应用到
  • CSS3 - flex属性

    前言 CSS属性 flex 规定了弹性元素如何伸长或缩短以适应flex容器中的可用空间 这是一个简写属性 用来设置 flex grow flex shrink flex basis flex grow 属性 定义项目的放大比例 默认为0 即
  • MongoDB max 获取最大值 (Golang)

    某个集合 要获取某个字段的最大值 有两种办法 一个是用sort 另一个是用聚合 Aggregate 下面是代码演示 sort var ID uint64 func initIDEx clientOptions options Client
  • count(distinct 多个字段)

    select count distinct col1 col2 col3 from table 但是 这样是不允许的 因为count是不能统计多个字段的 虽然distinct是可行的 有种比较直接的方法就是把消除重复后在统计查询 selec
  • ubuntu 20.4 + openswan 实现点对点VPN

    需求背景 多个IDC机房或者办公地点 不同地址位置 用linux系统和软件 组一个局域网 共享网络资源 需求环境 ubuntu 20 4 openswan 实现点对点VPN 需要技能 熟悉ubuntu 会用日常网络指令 了解网络结构 理解私
  • 使用C++实现Flutter Windows插件

    上周实现的Flutter条形码插件已经发布到https pub dev packages flutter barcode sdk 平台相关部分只包含了Android的Java代码 这周新增用于Windows的C 代码 后续计划还包含iOS和
  • 关于scrapy网络爬虫的xpath书写经验总结

    借助于scapy的爬虫框架 能方便实现低网络数据的爬取 其中xpath如何写法 对元素的定位在爬取过程中起着至关重要的作用 以下是对xpath写法的一些经验 1 优先遵循 自底向上 原则 即从所要爬取的字段节点出发 层层向上 向父节点去遍历
  • 判断App版本号

  • 各个硬件的工作原理

    前情回顾 主存储器的基本组成 存储体 用于存放数据的东西 由一系列的存储元件构成 可以存放二进制的 0 和 1 运算器的基本组成 控制器的基本组成 计算机的工作过程 案例分析 执行指令0 执行指令1 执行指令2 执行指令3 执行指令4 总结
  • Pytorch 提取权重等参数 写入Excel

    Pytorch 提取权重等参数 写入Excel表 标签 Pytorch Topic 网络参数导出 时间 2022 5 27 写在最前 最近有在做量化相关的东西 不确定是不是我这边没设置好怎么 量化后只给出了相应层的s z值 这里就需要将网络