DAY 42

浙大疏锦行

一、核心概念铺垫

  • 回调函数:将函数作为参数传递,在特定事件发生时被动调用。代码结构为"外部函数 → 回调",常用于异步、事件驱动。
  • 装饰器:主动修改原函数行为,用新函数包装原函数。代码结构为"装饰器 → 原函数 → 额外逻辑",适合统一增强多个函数。
  • Lambda 匿名函数 :单行临时函数 lambda 参数: 表达式,用完即弃,适合 Hook 中的简单逻辑。

二、PyTorch 中的 Hook 函数

PyTorch 利用动态计算图,在模型前向/反向传播的特定节点插入回调函数,实现不修改模型结构就能监听甚至修改中间层数据。

Hook 类型 注册方法 功能 典型用途
模块钩子(前向) register_forward_hook 捕获模块的输入/输出(只读) 可视化中间层特征图、特征提取
模块钩子(反向) register_backward_hook 捕获模块的输入/输出梯度 分析梯度流、梯度裁剪
张量钩子 register_hook 监听/修改张量的梯度 自定义梯度变换、梯度检查

使用时需注意:钩子完成后调用 handle.remove() 释放,避免内存泄漏。

三、Grad-CAM 的原理与实现

目标 :生成类激活热力图,显示 CNN 做分类决策时关注的图像区域。

核心步骤:

  1. 选定目标卷积层,通过 Hook 捕获其前向输出(特征图)和反向梯度。
  2. 对梯度做全局平均池化,得到各特征图的重要性权重。
  3. 用权重对特征图加权求和,再经过 ReLU 去除负影响,生成原始热力图。
  4. 将热力图双线性插值到原图尺寸,归一化后以彩色叠加到原始图像上。

示例结果:对 CIFAR-10 青蛙图像,模型主要通过腿和头部区域判断类别,验证了决策的合理性。


相关推荐
懂点Tech1 小时前
ctfshow misc28:GIF 高度修改解题与脚本实现
开发语言·windows·python
comedate1 小时前
SMLib 的 Examples 导读:PyAPI / SM_API / SMLib 三组示例怎么读
python·cad·smlib·examples·sm_api
云和数据.ChenGuang2 小时前
Python 重写(Override)深度解析:从 MRO 到 super() 的完整机制
java·开发语言·人工智能·python·langchain·1024程序员节
川石课堂软件测试2 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
万化冥合3 小时前
PyBox屏幕键盘如何辅助演示键盘操作?
python·计算机外设
车软学堂3 小时前
从测试转开发,到底要补什么
网络·人工智能·python·功能测试·单片机·车载系统·自动化
天空依然蔚蓝3 小时前
分享一个自动检测网站在线状态的python程序
python·运维开发·1024程序员节
岁月宁静3 小时前
一个 AI 项目从本地到上线,要经过哪些步骤?全流程讲清楚
python·docker·agent
codists4 小时前
《crafting interpreters》阅读笔记:p45-p45
python
曲径海盗5 小时前
【Python 学习第 41 天】for 循环
python·学习笔记·编程入门