不同於靜態計算圖中網路結構一開始就被預設好,動態計算圖中乙個節點只有被執行到且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上執行,還可...