第十九章 解读利用pytorch可视化特征图以及卷积核参数(工具)
介绍一种可视化feaature maps以及kernel weights的方法
推荐可视化工具TensorBoard:可以查看整个计算图的数据流向,保存再训练过程中的损失信息,准确率信息等
学习视频:
使用pytorch查看中间层特征矩阵以及卷积核参数_哔哩哔哩_bilibili
代码下载:
deep-learning-for-image-processing/pytorch_classification/analyze_weights_featuremap at master · WZMIAOMIAO/deep-learning-for-image-processing · GitHub
一、所需文件
AlexNet.pth 和 resNet34.pth 文件通过之前的训练获得
二、操作步骤
AlexNet 的中间层特征矩阵
1.在analyze_feature_map.py 文件的 out_put 处设置断点并debug,查看print model所打印的信息
- 打印两个层结构:第一个是features,第二个是classifier,与 alexnet_model.py文件中的所定义的层结构一一对应,如下图所示:
- 在 alexnet_model.py 文件的 for name, module in self.features.named_children(): 行设置断点并单步运行
得到name = 0 和卷积层conv 2d,后面以此类推
- 让程序接着运行到for循环处
查看out_put,是一个list,一共有三层,分别对应第一个,第二个,第三个卷积层的输出特征矩阵
5.让程序执行完
(1)输出为第一个卷积层 所输出的特征矩阵的前12个通道的特征图
通过特征图的明暗程度来理解卷积层一所关注的一些信息,亮度越高的地方就是卷积层越感兴趣的地方。
原图如下:
(2)卷积层二所输出的特征矩阵:抽象程度越来越高,有些卷积核没有起到作用
卷积层三 所输出的特征矩阵
(3)去掉cmap='gray’之后的颜色为蓝绿色
(4)如果想看更多信息,则在 alexnet_model.py 的向前传播过程中进行修改
假如要看全连接层的图像,则也要将输入的图像通过features层结构,再通过全连接层才能查看
resnet34 的中间层特征矩阵
1.修改代码并再下图处设置断点debug
可以再终端看到resnet的层结构
2.运行结果如图
明显resnet学习到的信息比 alexnet更多
有两个原因:resnet确实比alexnet更加优秀
resnet使用迁移学习的方法,并且预训练数据集是使用 imagenet 数据集进行训练的
3.layer1所输出的特征矩阵,明显比alexnet好很多,每一个特征层都有输出,都是有用的
AlexNet 的卷积核参数
- 打开 analyze_kernel_weight.py 文件
这里可以不用实例化模型,直接通过 torch.load 函数载入训练权重,因为通过 torch.load 载入后,就是一个字典类型,它的key就代表每个层结构的名称,对应的value就是每层的训练信息
- 通过 model.state_dict 函数获取模型中所有的可训练参数的字典,再通过keys方法获取所有的具有参数的层结构的名称
单步运行看一下weights_keys
如下图所示,weights_keys 是一个有序的keys,按照正向传播过程的顺序进行保存的
命名规则:
feature0,feature3,feature6,feature8,feature10等卷积层才有训练参数
激活函数和最大池化下采样是没有激活函数的
3.接下来遍历 weights_keys
model.state_dict 函数获取模型中所有的可训练参数的字典信息,传入对应的key就得到了参数信息,再通过numpy方法将权值信息转化为numpy格式,方便分析
注意:卷积核通道的排列顺序是
kernel_number 卷积核个数,对应的输出特征矩阵的深度
kernel_channel 卷积核深度,对应的输入特征矩阵的深度
kernel_height, kernel_width,卷积核的高度和宽度
- 获得信息
# k = weight_t[0, :, :, :] # 通过切片的方式获得信息# calculate mean, std, min, max 对所有卷积核的信息进行计算weight_mean = weight_t.mean() #均值weight_std = weight_t.std(ddof=1) #标准差weight_min = weight_t.min() #最小值weight_max = weight_t.max() #最大值
卷积层一对应的卷积核值的分布
卷积层一对应的偏置的分布
后面的都是一样的,不做展示
ResNet 的卷积核参数
1.第一个卷积层的分布
2.bn层的分布,使用bn时就不用使用偏置
weight就是下图的 参数
bias对应上图的 参数
mean对应的是均值 ,是统计得到的
方差 也是统计得到的
后面的输出都是一样的结构。
相关文章:
第十九章 解读利用pytorch可视化特征图以及卷积核参数(工具)
介绍一种可视化feaature maps以及kernel weights的方法 推荐可视化工具TensorBoard:可以查看整个计算图的数据流向,保存再训练过程中的损失信息,准确率信息等 学习视频: 使用pytorch查看中间层特征矩阵以及卷积核参数_哔哩哔哩…...

【React】Memo
组件重新渲染时缓存计算的结果。 实例:count1计算斐波那契数列,count2和count1可以触发数值变化。使用memo可以使只有在count1变化时触发斐波那契数列计算函数,而count2变化时不触发斐波那契数列计算函数。 import { useMemo } from "r…...

宣传技能培训1——《新闻摄影技巧》光影魔法:理解不同光线、角度、构图的摄影效果,以及相机实战操作 + 新闻摄影实例讲解
新闻摄影技巧 写在最前面摘要 构图与拍摄角度景别人物表情与叙事远景与特写 构图与拍摄角度案例 主体、陪体、前景、背景强调主体利用前景和背景层次感的创造 探索新闻摄影中的构图技巧基本构图技巧构图技巧的应用实例实例分析1. 黄金分割和九宫格2. 三角型构图3. 引导线构图4.…...

3 时间序列预测入门:TCN
0 引言 TCN(全称Temporal Convolutional Network),时序卷积网络,是在2018年提出的一个卷积模型,但是可以用来处理时间序列。 论文:https://arxiv.org/pdf/1803.01271.pdf 一维卷积:在时间步长方…...
Linux学习笔记-芯片性能检测
文章目录 概述Dhrystone(单核性能测试工具)简介:源码下载:源码编译:使用及输出结果 coremark(多核性能测试工具)简介:源码下载:源码编译:使用及输出结果&…...

2023年网络安全比赛--综合渗透测试②(超详细)
一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.通过 PC 中的渗透测试平台 Kali 对服务器场景进行渗透测试,将扫描开放的所有端口当作flag提交(例:21,22,23); 2.通过 PC 中的渗透测试平台 Kali 对服务器场景进行渗透测试,将初…...
关于8位图像buffer显示到picturebox上
最终版本: void showbuffer2pictmod4(byte[] buffer, int ww, int hh, PictureBox destImg) { int mod ww % 4;//解决四位对齐问题20150716 int temproiw ww (4 - mod) % 4;//其实这都是和显示相关,处理图像其实不必…...

cocos游戏引擎制作的滚动框地图防止误点操作的简单方法
本篇文章主要讲解,使用cocos creator 来解决在我们日常滚动框开发中,滚动和触摸存在冲突的情况,导致的误触行为的解决办法。 日期:2023年11月25日 具体事项 说明:在我们滚动滚动框时,会出现误点的情况&…...
vue 使用vuex中的data数据引用问题
先上代码: this.userRoleInfo2 this.$store.state.userInfo this.userRoleInfo2.name 111 this.userRoleInfo2.orgName 222 this.userRoleInfo2.orgId 4444问题描述: 博主,定义了一个变量userRoleInfo2来接收了 从vuex中获取了userInfo…...
日志配置的一些思考
日志配置的一些思考 背景说明基础配置抽取子服务扩展配置 背景 基本所有的系统都需要完善的日志配置, 这里是一些常用的配置. 但是没有本地验证, 只能提供一份配置思路. 说明 不可直接用, 会报错, 提供一种配置思路. 不可直接用, 会报错, 提供一种配置思路. 不可直接用, 会报…...

阶梯排列硬币
题意: 你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。 给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。 示例 1ÿ…...

HarmonyOS应用开发者高级认证【题库答案】
HarmonyOS应用开发者基础认证【题库答案】 一、判断题 云函数打包完成后,需要到AppGallery Connect创建对应函数的触发器才可以在端侧中调用(错)在column和Row容器组件中,aligntems用于设置子组件在主轴方向上的对齐格式…...
【解答】关于Linux内核的一些疑问
GNU计划是什么 GNU计划是由理查德斯托曼在1983年9月27日公开发起的自由软件集体协作计划,其目标是创建一套完全自由的操作系统GNU。这个操作系统的内容软件完全以GPL方式发布,意味着用户拥有运行、复制、分发、学习、修改和改进该软件的自由。 GNU的命名…...

状态设计模式是什么?什么是 State 状态设计模式?Python 状态设计模式示例代码
什么是 State 状态设计模式? 状态设计模式是一种行为型设计模式,它允许一个对象在其内部状态发生改变时改变其行为,使其看起来好像改变了其类。状态模式主要解决的问题是:当一个对象的行为取决于它的状态,并且在运行时…...

电力感知边缘计算技术网关产品设计方案-硬件方案
网关硬件架构设计图: 1.配置方案 配置差异 A类网关 B类网关 CPU...
【线性代数与矩阵论】坐标变换与相似矩阵
坐标变换与相似矩阵 2023年11月4日 #algebra 文章目录 坐标变换与相似矩阵1. 基变换与坐标变换2. 相似变换下链 1. 基变换与坐标变换 坐标变换与基变换都要通过过渡矩阵 A A A 来实现。设有一向量 f ⃗ \vec f f , x x x 是在基 α \alpha α 下该向量的坐标…...

C语言编译过程再解析
多年以前,分析过编译过程,并写了一篇博客,现在对编译过程有了更广阔的认识,记录在此 编译过程 中的 链接与 编译 编译过程分为1. 预处理2. 编译3. 汇编4. 链接其中有 2个过程比较特殊,1. 编译2. 链接对于C程序来说,链接分为提前链接(静态链接)对应下图第1行运行时链接(动态链…...

GeoTrust证书
GeoTrust证书的特点与优势: 1,广泛的浏览器兼容性: GeoTrust证书得到了各大主流浏览器的广泛支持,确保您的网站能够在用户使用的任何浏览器上获得正常的安全连接。 2,强大的加密技术: GeoTrust采用先进的…...

肾合胶囊 | 冬不养肾春易病,若出现了这六大表现,小心是肾虚!
冬季作为一年中最寒冷的季节,自然万物皆静谧闭藏,而肾具有潜藏、封藏、闭藏精气的特点,是封藏之本,肾的脏腑特性与冬季相通应,所以在冬季更应该重视养肾。 而现在正值初冬,正是开始养肾的最佳时间。此时培…...
IDEA中常用快捷键
整理了一些IDEA开发常用的快捷键: 快捷键组合实现效果psvm Tab键 / main Tab键public static void main(String[] args)sout Tab键System.out.println()Ctrl X删除当前行Ctrl D复制当前行AltInsert(或右键Generate)生成代码(如get,set方法,构造函数等)CtrlAltT…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...