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