day47

@浙大疏锦行

1.回调函数

概念:是一种 "被动触发" 的函数 ------ 它不会主动执行,而是在某个特定事件(如模型训练到某一轮、损失下降到阈值)发生时,被程序自动调用。

核心作用:用于在流程中插入自定义逻辑(比如训练时保存最优模型、记录中间结果)

示例场景:训练模型时,每轮结束后自动计算验证集精度,若精度提升则保存当前模型。

  1. lambda 函数

概念:Python 中的匿名函数(没有正式函数名),

核心特点:简洁、临时使用,适合替代简单的小函数。在深度学习中常作为 Hook 函数的 "回调逻辑"(因为 Hook 需要传入一个简单的处理函数)。

实例:

  1. Hook 函数的模块钩子和张量钩子

Hook 函数在PyTorch 中用于修改张量或模块中间结果,核心是在不修改模型结构的前提下,获取模型前向 / 反向传播中的中间数据(如特征图、梯度)。

(1)模块钩子(Module Hook)

作用:绑定到模型的某个模块(如nn.Conv2d、nn.Linear),在模块执行前 / 后触发。

常见类型:

register_forward_hook:模块前向传播完成后触发,可获取模块的输入和输出张量;

register_backward_hook:模块反向传播完成后触发,可获取模块的输入梯度、输出梯度。

示例(获取某卷积层的输出特征图):

(2)张量钩子(Tensor Hook)

作用:绑定到某个张量(如模型的输入张量、参数张量),在张量的梯度计算完成后触发。

常见类型:register_hook:张量的梯度计算完成后,可获取 / 修改该张量的梯度。

示例(修改某参数的梯度):

  1. Grad-CAM

Grad-CAM(Gradient-weighted Class Activation Mapping)是用于可视化模型 "关注哪些区域做出预测" 的方法,核心是结合 "特征图" 和 "对应类别的梯度",生成热力图。

Grad-CAM 的核心步骤(结合 Hook 实现):

获取目标层的特征图:用forward_hook捕获模型最后一个卷积层的输出特征图;

获取目标类别的梯度:用backward_hook捕获该特征图对目标类别的梯度;

计算梯度权重:对梯度在空间维度(H×W)取平均,得到每个通道的权重;

生成热力图:用通道权重加权求和特征图,再通过 ReLU 和上采样,得到与输入图片同尺寸的热力图。

热力图中颜色越红的区域,是模型做出预测时 "重点关注" 的区域,可用于解释模型的决策逻辑。

相关推荐
leihefeng9 分钟前
邮件文本分类:CountVectorizer / TF-IDF + 朴素贝叶斯
python·分类·数据挖掘·tf-idf·sklearn
码艺-Alimjan10 分钟前
维吾尔语数字转文本
java·javascript·python·算法·go
天空属于哈夫克326 分钟前
企业微信 API 自动发送消息:从流程到实战
python·自动化·企业微信
SunnyDays101130 分钟前
如何使用 Python 给 PDF 添加附件:文档附件与附件注释
开发语言·python·pdf
步行cgn31 分钟前
@Value 详解:Spring 属性注入的核心注解
java·python·spring
SamChan9032 分钟前
PDF翻译服务端到端基准测试:4款主流方案的吞吐量、延迟、内存占用对比
服务器·网络·python·ai·pdf·wpf
2501_937860941 小时前
Java 文件操作与IO(下):字节流、字符流实战IO读写
java·开发语言·python
E_ICEBLUE1 小时前
为 Excel 工作簿和工作表设置密码保护【Python教程】
python·excel
Sylvia33.5 小时前
LOL实时数据接入深度解析:从WebSocket到完整数据模型
java·网络·python·websocket·网络协议
梦想不只是梦与想5 小时前
Web 服务器网关协议:ASGI 和 WSGI
服务器·python·fastapi