使用register_hook()函数导致显存溢出的问题

hook()函数的作用很强大,pytorch中通常会自动舍弃图计算的中间结果,所以想要获取网络中间层的输出结果或者某些变量的梯度,就可以使用Hook函数来实现,hook函数包括tensor的hook和nn.Module的hook,用法相似。hook函数主要有x.register_hook(hook), layer.register_forward_hook()和layer.register_backward_hook(),x是模型的参数,第一个主要用于获得x的梯度信息,后面两个主要用于模型前向和后向运行中获取输入输出的结果,申明Hook函数必须在模型训练的前面,然后更重要的是:使用完hook后,要及时删除,不然很容易造成hook函数结果累积,使得显存爆掉。可使用hook.remove()删除。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值