简单粗暴PyTorch之hook函数与CAM可视化

本文介绍了PyTorch中的hook函数机制,用于在不改变模型主体的情况下实现额外功能,如捕获和修改中间变量。特别是Tensor.register_hook,用于在反向传播中获取张量的梯度。通过hook,可以保存非叶子节点如特征图和梯度信息,以进行计算图分析和梯度求导。此外,还提到了模型级别的hook注册方法。
摘要由CSDN通过智能技术生成

hook函数与CAM可视化

一、hook函数

hook函数机制:不改变主体,实现额外功能,像一个挂件,挂钩,hook

hook函数与pytorch的动态图运行机制有关,动态图运算结束之后,中间变量有些会背释放掉,如特征图、非叶子节点梯度。可以用hook函数在前向传播或者反向传播中获取甚至改变这些变量。

针对张量的:

  1. torch.Tensor.register_hook(hook)

针对模型的:
2. torch.nn.Module.register_forward_hook
3. torch.nn.Module.register_forward_pre_hook
4. torch.nn.Module.register_backward_hook

1.1 Tensor.register_hook

功能:注册一个反向传播hook函数
Hook函数仅一个输入参数,为张量的梯度

计算图与梯度求导
y = (x+ w) * (w+1)
a = x + w b = w + 1
y = a * b
在这里插入图片描述
a,b为非叶子节点梯度会被释放掉,用hook函数捕获张量a的梯度。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值