grad_fn 里面的next_functions 属性

next_functions 反向传播计算图的记录。
在反向图的计算中,计算图终止于叶子AccumulateGrad节点。有一个.variable属性指向叶子节点。

例子:

a = torch.randn(1, requires_grad=True)
b = a*(a+2)
print (b.grad_fn.next_functions)
print (b.grad_fn.next_functions[1][0].next_functions)
print (b.grad_fn.next_functions[0][0].variable is a)

输出:

((<AccumulateGrad object at 0x7fbe7aa96780>, 0), (<AddBackward0 object at 0x7fbe7aa96748>, 0))
((<AccumulateGrad object at 0x7fbe7aa96780>, 0), (None, 0))
True

对于a*(a+2) 一个图分支是a,另一个图分支是a+2。第二个图分支含有一个a分支和一个常数2 分支

对反向传播的梯度进行处理


  p_tmp = p.expand_as(p)
  grad_acc = p_tmp.grad_fn.next_functions[0][0]
  hook_removehandle=grad_acc.register_hook(self._make_hook(p))
  self._hooks_removableHandle.append(hook_removehandle)
#使用remove去除gradient上面的函数
 hook_removehandle.remove()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝鲸123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值