当前位置: 首页 > news >正文

【Python】【Torch】神经网络中各层输出的特征图可视化详解和示例

本文对神经网络各层特征图可视化的过程进行运行示例,方便大家使用,有助于更好的理解深度学习的过程,尤其是每层的结果。

神经网络各层特征图可视化的好处和特点如下:

可视化过程可以了解网络对图像像素的权重分布,可以了解网络对图像特征的提取过程,还可以剔除对特征表达无关紧要的像素,缩短网络训练时间,减少模型复杂度。
可以将复杂多维数据以图像形式呈现,帮助科研人员更好的理解数据特征,同时可以建立定量化的图像与病理切片的对应关系,为后续病理研究提供可视化依据。

本示例以一幅图象经过一层卷积输出为例进行。在自己运行时可以多加几层卷积和调整相应的输出通道等操作。

import torch
import torch.nn as nn
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
import math
from torchvision import transforms
# 定义一个卷积层
conv_layer = nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3, stride=2, padding=1)# 输入图像(随机生成)
image = Image.open("../11111.jpg")
#input_image = torch.randn(1, 3, 224, 224)
transform = transforms.Compose([transforms.ToTensor()
])# 对图像应用转换操作
input_image= transform(image)
input_image = input_image.unsqueeze(0)# 通过卷积层获取特征图
feature_map = conv_layer(input_image)batch, channels, height, width = feature_map.shape
blocks = torch.chunk(feature_map[0].cpu(), channels, dim=0)
n = min(32, channels)  # number of plots
fig, ax = plt.subplots(math.ceil(n / 8), 8, tight_layout=True)  # 8 rows x n/8 cols
ax = ax.ravel()
plt.subplots_adjust(wspace=0.05, hspace=0.05)
for i in range(n):ax[i].imshow(blocks[i].squeeze().detach().numpy())  # cmap='gray'ax[i].axis('off')
plt.savefig('./tezhengtu.jpg', dpi=300, bbox_inches='tight')
plt.show()
plt.close()

代码解释:
步骤1 定义一个卷积层(Convolutional Layer):conv_layer,该卷积层有3个输入通道,64个输出通道, kernel size为3x3,步长为2,填充为1。
步骤2输入图像:这里使用了一个真实的图像文件路径"…/11111.jpg"作为输入图像。你可以替换为你自己的图像文件路径。
步骤3定义一个图像转换操作(transform)序列,用于将输入图像转换为PyTorch需要的张量格式。这里仅包含一个操作:转换为张量(ToTensor)。
步骤4对输入图像应用转换操作:通过transform(image)将图像转换为PyTorch张量,然后通过unsqueeze(0)增加一个额外的维度(batch维度),使得输入图像的形状变为(1, 3, H, W)。

步骤5通过卷积层获取特征图:将输入图像传递给卷积层conv_layer,得到特征图feature_map。
步骤6将特征图转换为numpy数组:为了可视化,需要将特征图从PyTorch张量转换为numpy数组。这里使用了detach().numpy()方法来实现转换。
步骤7获取特征图的一些属性:使用shape属性获取特征图的batch大小、通道数、高度和宽度。
步骤8分块显示特征图:为了在图像中显示特征图,需要将特征图分块处理。这里使用torch.chunk方法将特征图按照通道数分割成若干块,每一块代表一个通道的输出。然后使用Matplotlib库中的subplot功能将分块后的图像显示在画布上。具体地,这段代码将分块后的图像显示在一个8x8的画布上,每个小图的尺寸为256x256像素(因为最后一块图像可能不足8个通道,所以使用了最少的小图数量)。最后使用savefig方法保存图像到文件,并关闭Matplotlib的画布。

输入的图像为:
在这里插入图片描述
经过一层卷积之后的特征图为:

在这里插入图片描述

相关文章:

【Python】【Torch】神经网络中各层输出的特征图可视化详解和示例

本文对神经网络各层特征图可视化的过程进行运行示例,方便大家使用,有助于更好的理解深度学习的过程,尤其是每层的结果。 神经网络各层特征图可视化的好处和特点如下: 可视化过程可以了解网络对图像像素的权重分布,可…...

接口测试学习路线

接口测试分为两种: 测试外部接口:系统和外部系统之间的接口 如:电商网站:支付宝支付 测试内部接口:系统内部的模块之间的联调,或者子系统之间的数据交互 测试重点:测试接口参数传递的正确性&…...

蓝桥杯官网算法赛(蓝桥小课堂)

问题描述 蓝桥小课堂开课啦! 海伦公式(Herons formula),也称为海伦-秦九韶公式,是用于计算三角形面积的一种公式,它可以通过三条边的长度来确定三角形的面积,而无需知道三角形的高度。 海伦公…...

求集合的笛卡尔乘积

求集合的笛卡尔乘积 一:【实验目的】二:【实验内容】三:【实验原理】四:代码实现: 一:【实验目的】 通过编实现给定集合A和B的笛卡尔积CAA,DAB,EBA,FAAB,GA(A*B). 二:【实验内容】…...

Linux系统常用指令大全(图文详解)

目录 前言 一、UNIX的登录与退出 1、登录 (1)执行格式: (2)步骤 2、退出 二、UNIX命令格式 三、常用命令 1、目录操作 (1)显示目录文件 ls (2)建新目录 …...

基于PLC触摸屏控制的伺服电机绕线机

摘 要 绕线机是专供连续绕制多圈电位器绕阻的专用机床设备。本文介绍了采用 PLC作为主控制机器,触摸屏作为操作界面,步进电机、伺服电机驱动的绕线机系统。描述 了触摸屏的原理、分类和触摸屏人机界面的控制方式,完成了触摸屏人机界面设计。…...

1.8 C语言之参数传递

1.8 C语言之参数传递 一、参数传递 一、参数传递 在C语言中,所有的参数传递都是值传递,也就是说,传递给被调用函数的参数值存放在临时变量中,而不是存放在原来的变量中。这与其他语言的引用传递有所不同。在C语言中,被…...

【Linux】进程间通信——system V共享内存、共享内存的概念、共享内存函数、system V消息队列、信号量

文章目录 进程间通信1.system V共享内存1.1共享内存原理1.2共享内存数据结构1.3共享内存函数 2.system V消息队列2.1消息队列原理 3.system V信号量3.1信号量原理3.2进程互斥 4.共享内存的使用示例 进程间通信 1.system V共享内存 1.1共享内存原理 共享内存区是最快的IPC形式…...

【黑马甄选离线数仓day05_核销主题域开发】

1. 指标分类 ​ 通过沟通调研,把需求进行分析、抽象和总结,整理成指标列表。指标有原子指标、派生指标、 衍生指标三种类型。 ​ 原子指标基于某一业务过程的度量值,是业务定义中不可再拆解的指标,原子指标的核心功能就是对指标…...

使用gin 代理 web网页

问web项目的代理,业界常用的方案是nginx做代理,这个是网上最多资料的。 因为我需要做自己的流量转发,也就是所有访问都要经过我的一个流量分发微服务,这和nginx作用冲突了。如果再加个nginx来做第一层方向代理和网页的静态资源代…...

计算器的模拟实现

计算器的模拟实现 一、实验题目:计算器二:实验目的:三:实验内容与实现1:【实验内容】2:【实验实现】1.计算器界面的实现,如下图所示:2:各项功能的实现,如下图…...

CentOS7搭建smb服务器

安装smb sudo yum install samba samba-client samba-common配置smb vim /etc/samba/smb.conf [shared] path /path/to/shared/folder writable yes browsable yes guest ok yes valid users yourname添加smb用户 sudo useradd youname sudo smbpasswd -a youname然后会…...

openEuler 22.03 LTS x86_64 cephadm 部署ceph 16.2.14 未完成 笔记

环境 准备三台虚拟机 10.47.76.94 node-1 10.47.76.95 node-2 10.47.76.96 node-3 下载cephadm [rootnode-1 ~]# yum install cephadm Last metadata expiration check: 0:11:31 ago on Tue 21 Nov 2023 10:00:20 AM CST. Dependencies resolved. Package …...

Java计算时间差,距结束还有几天几小时几分钟

文章目录 1、写法2、备份3、LocalDate、LocalDateTime、Date、String互转 1、写法 //静态方法,传入年月日时分秒 LocalDateTime startTime LocalDateTime.of(2023, 11, 22, 15, 09, 59); LocalDateTime endTime LocalDateTime.of(2023, 11, 30, 0, 0, 0); //计算…...

【云原生 Prometheus篇】Prometheus的动态服务发现机制与认证配置

目录 一、Prometheus服务发现的方式1.1 基于文件的服务发现1.2 基于consul的服务发现1.3 基于 Kubernetes API 的服务发现1.3.1 简介1.3.2 基于Kurbernetes发现机制的部分配置参数 二、实例一:部署基于文件的服务发现2.1 创建用于服务发现的文件2.2 修改Prometheus的…...

ref详解(C#)

本质上来说 ref 的就是把 C/C 指针的那一套又拿回来了,而且还封装成一套自己的玩法。 我想设计者的初心把 ref 的功能限制得死死的,可能也考虑到 C# 是一门面向业务开发的语言,讲究的是做项目快狠准,性能反而不是第一要素&#x…...

运维高级-day01

shell回顾 1、快速生成版权控制信息,具体的内容自己替换 [root scripts]# cat ~/.vimrc autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()" func SetTitle() if expand("%:e") sh call setline(1,"#!/bin/bash")…...

含分布式电源的配电网可靠性评估matlab程序

微❤关注“电气仔推送”获得资料(专享优惠) 参考文献: 基于仿射最小路法的含分布式电源配电网可靠性分析——熊小萍 主要内容: 通过概率模型和时序模型分别进行建模,实现基于概率模型最小路法的含分布式电源配电网…...

k8s docker总结特殊点

k8s docker总结特殊点 前言一、docker 的驱动。1、cgroup:(Control Groups)2、日志驱动(log driver)3、存储驱动4、网络驱动: 二、k8s中网络插件(常用calico,次flannel)**Flannel:**…...

区块链技术与应用 【全国职业院校技能大赛国赛题目解析】第四套区块链应用后端开发

第四套区块链应用后端开发 环境 : ubuntu20 fisco : 2.8.0 springboot 2.1.1 fisco-java-sdk: 2.7.2 maven 3.8.8 前言 这套后端样题,只涉及调用fisco的系统接口,不涉及此食品溯源项目的业务接口,所以我就直接生成一个springboot项目进行完成此题目。 请提前准备好一…...

3步掌握微博相册下载工具:新手快速上手指南

3步掌握微博相册下载工具:新手快速上手指南 【免费下载链接】Sina-Weibo-Album-Downloader Multithreading download all HD photos / pictures from someones Sina Weibo album. 项目地址: https://gitcode.com/gh_mirrors/si/Sina-Weibo-Album-Downloader …...

如何快速掌握DesktopNaotu:跨平台思维导图的完整指南

如何快速掌握DesktopNaotu:跨平台思维导图的完整指南 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版,思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址: https://gitcode.com/gh_mirr…...

智能合约的形式化验证与安全漏洞静态分析

智能合约的形式化验证与安全漏洞静态分析 随着区块链技术的快速发展,智能合约作为去中心化应用的核心组件,其安全性至关重要。由于智能合约一旦部署便难以修改,且涉及高价值的数字资产,任何漏洞都可能导致严重的经济损失。形式化…...

魔兽争霸3终极助手:WarcraftHelper全版本完美兼容指南

魔兽争霸3终极助手:WarcraftHelper全版本完美兼容指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是魔兽争霸3玩家的终…...

ZLUDA终极指南:让非NVIDIA显卡也能运行CUDA程序的完整教程

ZLUDA终极指南:让非NVIDIA显卡也能运行CUDA程序的完整教程 【免费下载链接】ZLUDA CUDA on non-NVIDIA GPUs 项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA 你是否曾因为手头没有昂贵的NVIDIA显卡而无法体验CUDA加速的AI训练?是否想过…...

STM32F103RET6 + W5500 + mbedTLS 2.24 实现HTTPS访问百度保姆级教程(附完整源码)

STM32F103RET6与W5500模块实现HTTPS安全通信全流程解析 在物联网设备开发中,安全通信已成为基本要求。本文将详细介绍如何基于STM32F103RET6微控制器和W5500以太网模块,通过mbedTLS 2.24实现HTTPS安全通信的全过程。不同于简单的功能验证,我…...

TVA时代企业IT工程师的新使命(系列之四)

技术背景介绍:AI智能体视觉检测系统(TVA,全称为“Transformer-based Vision Agent”),即基于Transformer架构以及“因式智能体”创新理论的高精度视觉智能体,并非传统机器视觉软件或者早期AI视觉技术&#…...

FogGate-YOLO:直击雾天检测痛点,基于通道选择的 YOLOv8 优化方案

点击蓝字关注我们关注并星标从此不迷路计算机视觉研究院公众号ID|计算机视觉研究院学习群|扫码在主页获取加入方式https://pmc.ncbi.nlm.nih.gov/articles/PMC13030070/pdf/sensors-26-01811.pdf计算机视觉研究院专栏Column of Computer Vision Institut…...

51单片机实训:从零打造智能电子秤(含成本计算与超重报警)

1. 项目背景与硬件选型 第一次接触电子秤项目时,我盯着超市收银台的电子秤看了足足十分钟。这种既能称重又能计价的小设备,用51单片机真的能实现吗?后来在实验室熬了三个通宵,终于用成本不到50元的材料做出了原型机。现在就把这个…...

markitdown:微软出的「万物转Markdown」工具,内容提取效率翻倍

markitdown:微软出的「万物转Markdown」工具,内容提取效率翻倍 做内容的人每天要处理各种格式的文件:PDF报告、Word文档、PPT、Excel表格、图片中的文字…… 以前要么手动复制,要么专门找工具转换,效率极低。微软开源了…...