PyTorch中的hook机制

分体滑板
PyTorch中的hook机制
雨棚信号灯
(给⼤家分享⼀篇知乎上的博⽂,⾥⾯的内容⼗分全⾯和详细,结合代码由浅⼊深讲解 PyTorch 中 hook 的⽤法:半⼩时学会 PyTorch Hook。)
中的钩⼦定义:
钩⼦编程(hooking),也称作"挂钩",是计算机程序设计术语,指通过拦截软件模块间的函数调⽤、消息传递、事件传递来修改或扩展操作系统、应⽤程序或其它软件组件的⾏为的各种技术。处理被拦截的函数调⽤、事件、消息的代码,被称为钩⼦(hook)。
Hook 是 PyTorch 中⼀个⼗分有⽤的特性,通过 hook 我们可以不必改变⽹络输⼊输出的结构,⽅便地获取、改变⽹络中间层变量的值和梯度。常⽤于可视化神经⽹络中间层的 feature、gradient,从⽽诊断神经⽹络中可能出现的问题,分析⽹络有效性。
PyTorch 中注册 hook 的三种⽅式:
hook_fn签名:hook_fn(grad) -> Tensor or None
作⽤:反向传播时,可获取中间变量的梯度。
电动加油泵
移动门hook_fn签名:hook_fn(module, input, output) -> None or modified output
作⽤:前向传播时,可获取中间层模块的输⼊/输出的数值。
彩钢板安装工程scr-035
hook_fn签名:hook_fn(module, grad_input, grad_output) -> Tensor or None
作⽤:反向传播时,可获取中间层模块的输⼊/输出的梯度。
第⼀个是 register_hook,是针对 Variable 对象的,后⾯的两个:register_forward_hook 和 register_backward_hook 是针对 nn.Module 这个对象的。注册钩⼦的三个函数都返回⼀个句柄(handle),调⽤ ve() 可以移除该 hook。
下⼀篇⽂章介绍 CAM(Class Activation Mapping,类别激活映射图/类别热⼒图/显著性图) 技术,并结合 hook+CAM 进⾏可视化演⽰。

本文发布于:2024-09-22 00:54:47,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/309919.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:获取   中间层   函数   拦截
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议