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 和上采样,得到与输入图片同尺寸的热力图。

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

相关推荐
love530love1 天前
OpenClaw Windows Companion 桌面客户端 连接 LM Studio 完整配置指南
人工智能·windows·python·openclaw
cui_ruicheng1 天前
Python从入门到实战(十六):多进程编程
开发语言·python
_Jimmy_1 天前
FastAPI + SQLAlchemy全局事务管理
python·fastapi
用户8356290780511 天前
如何使用 Python 在 Excel 中添加、编辑和删除超链接
后端·python
AC赳赳老秦1 天前
企业工商公开信息采集分析:OpenClaw 批量查询企业工商信息,生成企业画像报告
大数据·开发语言·python·自动化·php·deepseek·openclaw
FoldWinCard1 天前
D6 Python 基础语法 --- 保留关键字
开发语言·python
暮暮祈安1 天前
Celery 新手入门指南
java·数据库·python·flask·httpx
JustNow_Man1 天前
每日高频场景英文口语
python
风吹心凉1 天前
python3基础2026.7.22
开发语言·python
小猴子爱上树1 天前
一站式解决图片视频翻译难题的高效AI工具
人工智能·python·音视频