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.mzph.cn/news/1058598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026仍考RHCE?别被“全能”标签带偏,这篇给你真实答案

2025年11月,有个招聘数据可把整个Linux技术圈给惊着啦。 有一家特别厉害的云计算公司,在招Linux运维岗位的人时,岗位要求里有95.1%都明确写着“有RHCE认证的优先考虑”。 而且啊,要是你有这个认证,刚开始工作的工资比没…

告别无脑 <div>:HTML 语义化标签入门

生活中的例子 01让屏幕阅读器(盲人使用的工具)能准确读出网页结构。生活中的例子 02让搜索引擎(如 Google, 百度)更好地理解你的网页内容,提升排名。生活中的例子 03让其他接手你代码的程序员一眼看懂网页布局&#xf…

学校要求知网AIGC查重报告?比话能降知网AI率吗

2025年起,高校已明确要求毕业论文要检测AIGC率,AI率高于30%或40%就不能参加答辩,而部分学校、硕士论文更加严格,要求在20%以内。 这其中,大多数高校使用的AIGC检测系统是知网、万方、维普等主流查重系统,这…

【分布鲁棒】基于Wasserstein距离的两阶段分布鲁棒简易模型附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码获取及仿真…

【路径规划】基于RRT APF RRT+APF RRT星+APF实现机器人路径规划附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码获取及仿真…

多软件协同调度规则设计:避免依赖冲突的黄金法则

多软件协同调度规则设计:避免依赖冲突的黄金法则 作为一名IT部门经理,我经常会遇到一种令人心烦的场景:明明是同一个系统里运行的多个软件模块,但在实际部署或更新过程中,却因为依赖库冲突、版本兼容性问题、甚至路径…

神经网络:教电脑像人脑一样思考

生活中的例子 01人脸识别:手机通过你的脸部特征来解锁。生活中的例子 02自动驾驶:汽车识别红绿灯和行人,决定是停还是走。生活中的例子 03ChatGPT:理解你输入的文字,并像真人一样回答你。新手入门指南COPY嘿&#xff0…

翻过入门的第一座小山

一、学期回顾 1.1 回顾对软件工程课程的想象 在这学期初,课程刚开始时,我对这门课程的期待说多也不多,因为课程是“软件工程”,所以希望能从这门课中学习到有关实际搭建项目比如做app、做小程序、做web等相关的技术…

基于知识图谱的RAG

RAG(Retrieval Augmented Generation,检索增强生成)是结合检索与生成的AI技术,核心思想是“先检索、后生成”:先从外部知识库(文档、数据库等)中查找与问题相关的信息片段,再将检索内容作为上下文输入大语言模型(LLM),生成更准确、可靠的回答。其效果优化主要分为检…

8 个降AI率工具推荐,专科生必看!

8 个降AI率工具推荐,专科生必看! AI降重工具:专科生论文的得力助手 在当前高校论文评审中,AIGC率和查重率已成为影响成绩的重要因素。许多专科生在完成论文时,常常因为使用AI工具生成内容而面临查重系统检测不合格的风…

【灵敏度分析】33节点配电网(IEEE33)改进灵敏度分析附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码获取及仿真…

协议解析引擎横评:NLP技术哪家强?

协议解析引擎横评:NLP技术哪家强? ——从行业背景到未来展望,一文看懂技术实力与应用潜力在当今数字化、智能化的时代,协议解析引擎作为连接系统与功能的核心工具,正逐渐成为各类应用场景中不可或缺的技术支柱。无论是…

英语_阅读_London_待读

London is one of the most famous cities in the world, with a rich history that has seen it change greatly over time.伦敦是世界上最著名的城市之一,拥有悠久而丰富的历史,在漫长的岁月中经历了巨大的变化。 …

Napi::Array

Napi::ArrayNapi::Array类继承自Napi::Object类。数组是 JavaScript 数组的原生表示。Napi::Array是对表示 JavaScript 数组的napi_value的包装。Napi::TypedArray和Napi::ArrayBuffer分别对应 JavaScript 中的数据类型(如Napi::Int32Array和Napi::ArrayBuffer&…

YOLOv11 改进 - 注意力机制 | IIA信息整合注意力(Information Integration Attention ):精准保留空间位置信息,平衡精度与计算成本 | TGRS2025

前言 本文提出信息整合注意力(IIA)机制,并将其集成到YOLOv11中用于遥感图像语义分割。传统CNN难捕捉全局信息,Transformer计算复杂,现有基于Mamba的方法未充分考虑局部信息。IIA利用图像特征空间位置不变性,先融…

PHP如何连接到Redis_PHP连接和操作Redis数据库的方法

PHP如何连接到Redis_PHP连接和操作Redis数据库的方法Posted on 2025-12-23 22:36 pcwanli 阅读(0) 评论(0) 收藏 举报来源:https://www.php.cn/faq/1568560.html PHP连接到Redis数据库,核心在于利用PHP的Redis客…

AsyncContext

AsyncContextNapi::AsyncWorker类可能并非适用于所有场景。当使用其他任何异步机制时,引入新的Napi::AsyncContext类是必要的,以确保运行时能正确跟踪异步操作。Napi::AsyncContext类可传递给Napi::Function::MakeCallback()方法,以正确恢复正…

区块链存证服务对比:金融行业合规审计的可靠选择

区块链存证服务对比:金融行业合规审计的可靠选择 ——一位从业经验十五年的技术专家的实战分析在金融行业,合规审计是保障业务安全、防止法律风险、维护机构信誉的重要一环。近年来,金融交易频次的增加以及监管要求的不断升级,传统…

区块链存证服务对比:金融行业合规审计的可靠选择

区块链存证服务对比:金融行业合规审计的可靠选择 ——一位从业经验十五年的技术专家的实战分析在金融行业,合规审计是保障业务安全、防止法律风险、维护机构信誉的重要一环。近年来,金融交易频次的增加以及监管要求的不断升级,传统…

12月23日记

1.今天复习方法 2.明天学习离散数学 3.如何适配 MySQL 8.0 和 5.x 版本?