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

python打卡day46@浙大疏锦行

知识点回顾:

  1. 不同CNN层的特征图:不同通道的特征图
  2. 什么是注意力:注意力家族,类似于动物园,都是不同的模块,好不好试了才知道。
  3. 通道注意力:模型的定义和插入的位置
  4. 通道注意力后的特征图和热力图

内容参考

作业:

  1. 今日代码较多,理解逻辑即可
  2. 对比不同卷积层特征图可视化的结果(可选)

一、CNN特征图可视化实现

import torch
import matplotlib.pyplot as pltdef visualize_feature_maps(model, input_tensor):# 注册钩子获取中间层输出features = []def hook(module, input, output):features.append(output.detach().cpu())# 选择不同卷积层观察target_layers = [model.layer1[0].conv1,model.layer2[0].conv1,model.layer3[0].conv1]handles = []for layer in target_layers:handles.append(layer.register_forward_hook(hook))# 前向传播with torch.no_grad():_ = model(input_tensor.unsqueeze(0))# 移除钩子for handle in handles:handle.remove()# 可视化不同层特征图fig, axes = plt.subplots(len(target_layers), 5, figsize=(20, 10))for i, feat in enumerate(features):for j in range(5):  # 显示前5个通道axes[i,j].imshow(feat[0, j].numpy(), cmap='viridis')axes[i,j].axis('off')plt.show()

二、通道注意力模块示例

class ChannelAttention(nn.Module):def __init__(self, in_channels, reduction=16):super().__init__()self.avg_pool = nn.AdaptiveAvgPool2d(1)self.max_pool = nn.AdaptiveMaxPool2d(1)self.fc = nn.Sequential(nn.Linear(in_channels, in_channels // reduction),nn.ReLU(),nn.Linear(in_channels // reduction, in_channels),nn.Sigmoid())def forward(self, x):# ... existing code ...return x * attention_weights  # 应用注意力权重

三、热力图生成方法

def generate_heatmap(model, input_img):# 前向传播获取梯度model.eval()input_img.requires_grad = Trueoutput = model(input_img)pred_class = output.argmax(dim=1).item()# 反向传播计算梯度model.zero_grad()output[0, pred_class].backward()# 获取最后一个卷积层的梯度gradients = model.layer4[1].conv2.weight.gradpooled_gradients = torch.mean(gradients, dim=[0,2,3])# 生成热力图activations = model.layer4[1].conv2.activations.detach()for i in range(activations.shape[1]):activations[:,i,:,:] *= pooled_gradients[i]heatmap = torch.mean(activations, dim=1).squeeze()return heatmap

http://www.lryc.cn/news/2403611.html

相关文章:

  • C++.OpenGL (1/64) 创建窗口(Hello Window)
  • Excel 发现此工作表中有一处或多处公式引用错误。请检查公式中的单元格引用、区域名称、已定义名称以及到其他工作簿的链接是否均正确无误。弹窗
  • NVIDIA DRIVE AGX平台:引领智能驾驶安全新时代
  • 推荐12个wordpress企业网站模板
  • 沙市区举办资本市场赋能培训会 点赋科技分享智能消费新实践
  • Docker 容器化基础:镜像、容器与仓库的本质解析
  • 九.C++ 对引用的学习
  • 探秘鸿蒙 HarmonyOS NEXT:实战用 CodeGenie 构建鸿蒙应用页面
  • art-pi2 上手记录(二)
  • 数据库SQLite基础
  • 1.3 古典概型和几何概型
  • html-pre标签
  • 【WPF】WPF 项目实战:用ObservableCollection构建一个可增删、排序的管理界面(含源码)
  • MCU_IO驱动LED
  • 上门预约行业技术方案全解析:小程序、App还是H5?如何选择?
  • Java 集合面试题 PDF 及常见考点解析与备考指南
  • Java 大视界 -- 基于 Java 的大数据分布式计算在蛋白质组学数据分析中的加速与优化(255)
  • 如何通过外网访问内网?哪个方案比较好用?跨网远程连接网络知识早知道
  • Vue.js教学第十八章:Vue 与后端交互(二):Axios 拦截器与高级应用
  • C#中datagridview单元格value为{}大括号
  • 46、web实验-遍历数据与页面bug修改
  • 华为OD机试_2025 B卷_数组去重和排序(Python,100分)(附详细解题思路)
  • 云计算 Linux Rocky day03(which、快捷键、mount、家目录、ls、alias、mkdir、rm、mv、cp、grep)
  • gh hugging face使用
  • SQL Server全局搜索:在整个数据库中查找特定值的高效方法
  • JVM 内存溢出 详解
  • Qt 5.12 上读取 .xlsx 文件(Windows 平台)
  • 虚拟机CentOS 7 网络连接显示“以太网(ens33,被拔出)“、有线已拔出、CentOS7不显示网络图标
  • Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(六):图片上传交互功能
  • 传统的将自然语言转化为嵌入向量的核心机制是:,将离散的语言符号转化为连续的语义向量,其核心依赖“上下文决定语义”的假设和神经网络的特征提取能力。