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

day46_Grad-CAM@浙大疏锦行

Day 46 Grad-CAM 与 Hook 机制@浙大疏锦行

1. Hook 机制 (钩子函数)

概念

Hook 本质上是一种回调函数 (Callback),允许我们在不修改模型原始代码结构的情况下,动态地“监听”或“修改”模型内部中间层的输入、输出或梯度。

作用

  • 调试与可视化:查看中间层特征图(Feature Maps)。
  • 特征提取:提取高层语义特征用于下游任务。
  • 梯度分析:监控或裁剪梯度。
  • 可解释性:如 Grad-CAM 的实现。

PyTorch 中的 Hook 类型

  1. Module Hooks (针对层/模块)
    • register_forward_hook(hook_func): 在前向传播结束后调用。
      • hook_func(module, input, output): 可以获取该层的输入和输出。
    • register_backward_hook(hook_func): 在反向传播结束后调用。
      • hook_func(module, grad_input, grad_output): 可以获取该层的输入梯度和输出梯度。
  2. Tensor Hooks (针对张量)
    • tensor.register_hook(hook_func): 在计算该张量的梯度时调用,常用于修改梯度。

Grad-CAM (Gradient-weighted Class Activation Mapping)

简介

Grad-CAM 是一种可视化技术,用于解释卷积神经网络(CNN)的决策依据。它能生成热力图 (Heatmap),高亮显示图像中对模型预测结果贡献最大的区域(即“模型在看哪里”)。

原理

Grad-CAM 利用梯度信息来衡量最后一个卷积层中每个通道(Feature Map)对目标类别的重要性。

主要步骤:

  1. 前向传播:获取目标卷积层(通常是最后一层卷积)的特征图 (Activations)
  2. 反向传播:计算目标类别分数相对于该层特征图的梯度 (Gradients)
  3. 计算权重:对梯度进行全局平均池化 (Global Average Pooling),得到每个通道的重要性权重α k \alpha_kαk
  4. 加权求和:将权重与对应的特征图相乘并求和。
  5. ReLU 激活:应用 ReLU 函数,只保留对类别有正向贡献的区域(去除负值)。
    L G r a d − C A M c = R e L U ( ∑ k α k c A k ) L_{Grad-CAM}^c = ReLU(\sum_k \alpha_k^c A^k)LGradCAMc=ReLU(kαkcAk)
  6. 可视化:将生成的热力图上采样到原图大小,并叠加显示。

代码实现关键点

  • Hook
    • 使用forward_hook捕获特征图activations
    • 使用backward_hook捕获梯度gradients
  • 反向传播触发
    • 手动构造一个one-hot向量(目标类别为 1,其余为 0)。
    • 执行output.backward(gradient=one_hot)来计算针对特定类别的梯度。

@浙大疏锦行

http://www.jsqmd.com/news/130699/

相关文章:

  • 2026仍考RHCE?别被“全能”标签带偏,这篇给你真实答案
  • 告别无脑 <div>:HTML 语义化标签入门
  • 学校要求知网AIGC查重报告?比话能降知网AI率吗
  • 多软件协同调度规则设计:避免依赖冲突的黄金法则
  • Plotly/Dash高级可视化实战教程:从高维图表到企业级仪表盘
  • 【分布鲁棒】基于Wasserstein距离的两阶段分布鲁棒简易模型附Matlab代码
  • 翻过入门的第一座小山
  • 收藏必备!六个高含金量编程竞赛助你进大厂+网络安全学习资源大放送
  • 基于知识图谱的RAG
  • 8 个降AI率工具推荐,专科生必看!
  • AsyncContext
  • 协议解析引擎横评:NLP技术哪家强?
  • YOLOv11 改进 - 注意力机制 | IIA信息整合注意力(Information Integration Attention ):精准保留空间位置信息,平衡精度与计算成本 | TGRS2025
  • 盐酸-N-取代苯胺类泄漏后应急处置,关键步骤要记牢!
  • 12月23日记
  • Yandex竞价实战指南:5个让ROI翻倍的深度优化技巧
  • 基于Vue的新生入学报道管理系统(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
  • 使用 Spring Boot WebClient 调用大模型 API(OpenAI、文心一言、通义千问)
  • 02. 色彩空间类型
  • 东欧电商突围:3个Yandex精准获客策略让跨境订单暴涨
  • 低代码平台怎么选?这5款免费方案很友好
  • 关于单片机ADC数据采集方面的心得。
  • 电商
  • 【回声抵消】基于matlab NLMS回声抵消和双端监测仿真【含Matlab源码 14758期】
  • Lua 字符串处理指南
  • zsj_蓝桥python系列_列表补充
  • AI元人文构想:摘要(最终定稿版)
  • 【回声抵消】基于matlab kalman回声抵消和双端监测仿真【含Matlab源码 14759期】
  • 专家的进阶之路:技术深耕、跨界融合与个人品牌打造 - AK
  • Springboot3 Mybatis-plus 3.5.9 - 详解