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

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

相关推荐
penngo几秒前
# 使用Claude Code开发植物大战僵尸游戏(pygame,附源码)
python·游戏·pygame
hhb_6185 分钟前
Groovy语法进阶与工程实践指南
开发语言·python
hmywillstronger21 分钟前
Rhino 中文字方向问题的解析与解决方案
python
AI技术增长25 分钟前
Pytorch图像去噪实战(四):Attention UNet图像去噪实战,让模型重点恢复边缘和纹理区域
人工智能·pytorch·python
2401_8330336234 分钟前
如何修复固定定位头部容器中悬浮下拉菜单的错位问题
jvm·数据库·python
z4424753261 小时前
CSS Grid布局如何实现网格项目的自动增长_设置grid-auto-flow- row
jvm·数据库·python
GeLx1 小时前
从反爬角度:Playwright CDP 模式、Playwright 传统模式与 DrissionPage 的比较
python·程序人生·playwright·drissionpage·pyppeteer·浏览器自动化控制
m0_740352421 小时前
如何在 SvelteKit 中为动态加载的图片实现响应式悬停覆盖层
jvm·数据库·python
TechWayfarer1 小时前
IP归属地运营商能解决什么问题?风控/增长/数据平台落地实践(附API代码)
开发语言·网络·python·网络协议·tcp/ip
雷帝木木1 小时前
Python 并发编程的高级技巧与性能优化
人工智能·python·深度学习·机器学习