PyTorch笔记--torch.autograd.grad()


在某些情况下,不需要求出当前张量对所有产生该张量的叶子节点的梯度,这时可以使用torch.autograd.grad()函数。

torch.autograd.grad(
outputs,   # 计算图的数据结果张量--它就是需要进行求导的函数
inputs,   # 需要对计算图求导的张量--它是进行求导的变量
grad_outputs=None,   # 如果outputs不是标量,需要使用此参数
retain_graph=None,   # 保留计算图
create_graph=None,   # 创建计算图
)

示例:

>>> import torch
>>> import torch.autograd
>>> x = torch.randn(3, 3, requires_grad = True)
>>> y = x.pow(2)
>>> z = 2*x
>>> f = 3*y+z
>>> gradients = torch.ones_like(f)
>>> torch.autograd.grad(f, y, gradients, retain_graph=True) # f对y求导 (tensor([[3., 3., 3.], [3., 3., 3.], [3., 3., 3.]]),)

这里的gradients的用法就是相当于backward函数中的grad_tensors。可参考这篇https://www.cnblogs.com/xxmrecord/p/15130853.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM