Pytorch02 自動求導機制

2021-09-25 10:21:29 字數 650 閱讀 3156

不同於靜態計算圖中網路結構一開始就被預設好,動態計算圖中乙個節點只有被執行到且requires_gard=true時,才被加入計算圖。

深入淺出動態計算圖

作用:從loss向前對葉節點鏈式求導,計算得到的引數儲存在每個葉節點的grad中

不需要更新梯度的tensor。

如果乙個節點根本就不需要更新梯度,也就意味著梯度流會停在這裡,他肯定是乙個葉節點。

例子:gan的訓練過程中利用生成器輸出訓練辨別器,因為bp時不再向前更新生成器的引數,則將輸出設為requires_grad=false,意味著梯度流會停在這裡。

使用者設定的requires_grad=true的tensor

例子:nn網路中的網路引數

後向傳播的必須條件:

1.至少有乙個葉節點requires grad。

2.所有路上節點(後向傳播的傳遞節點)必須滿足兩個條件:

requires_grad=true

grad_fn(函式關係)!=none

當滿足這兩個條件時,梯度就從scalar loss沿著函式流傳播到葉節點。

pytorch自動求導數機制

如果有乙個單一的輸入操作需要梯度,它的輸出也需要梯度 相反,只有所有輸入都不需要梯度,輸出才不需要。如果其中所有的變數都不需要梯度進行,反向傳播計算不會在子圖中執行。import torch from torch.autograd import variable x variable torch.r...

PyTorch自動求導

當目標張量為標量時,backward 無需傳入引數。import torch如果需要對tensor求導,requires grad要設定為true。定義輸入張量x x torch.tensor 2 初始化權重引數w,偏置b,設定requires grad為true,使用自動求導 w torch.ra...

pytorch基礎知識整理 一)自動求導機制

torch.autograd是pytorch最重要的元件,主要包括variable類和function類,variable用來封裝tensor,是計算圖上的節點,function則定義了運算操作,是計算圖上的邊。1.tensor tensor張量和numpy陣列的區別是它不僅可以在cpu上執行,還可...