快捷方式

torch.Tensor.backward

Tensor.backward(gradient=None, retain_graph=None, create_graph=False, inputs=None)[原始碼][原始碼]

計算當前張量相對於計算圖葉節點的梯度。

使用鏈式法則計算圖的微分。如果張量是非標量(即其資料包含多個元素)且需要梯度,則函式還需要額外指定一個 gradient。它應該是一個與 self 型別和形狀匹配的張量,表示被微分函式相對於 self 的梯度。

此函式在葉節點處累積梯度——您可能需要在呼叫此函式之前將 .grad 屬性歸零或設定為 None。有關累積梯度記憶體佈局的詳細資訊,請參閱 預設梯度佈局

注意

如果在使用者指定的 CUDA 流上下文中執行任何前向操作、建立 gradient 和/或呼叫 backward,請參閱 反向傳播的流語義

注意

當提供了 inputs 並且給定輸入不是葉節點時,當前實現將呼叫其 grad_fn(儘管嚴格來說獲取這些梯度並不需要這樣做)。這是一個實現細節,使用者不應該依賴它。更多詳細資訊,請參閱 https://github.com/pytorch/pytorch/pull/60521#issuecomment-867061780

引數
  • gradient (Tensor可選) – 被微分函式相對於 self 的梯度。如果 self 是標量,則可以省略此引數。

  • retain_graph (bool可選) – 如果為 False,則用於計算梯度的計算圖將被釋放。請注意,在幾乎所有情況下,將此選項設定為 True 都是不必要的,並且通常可以透過更有效的方式解決。預設為 create_graph 的值。

  • create_graph (bool可選) – 如果為 True,則將構建導數的計算圖,從而可以計算更高階導數。預設為 False

  • inputs (Tensor 序列,可選) – 相對於其累積梯度到 .grad 的輸入。所有其他張量將被忽略。如果未提供,則梯度將累積到用於計算 tensors 的所有葉節點張量中。

文件

訪問 PyTorch 的全面開發者文件

檢視文件

教程

獲取針對初學者和高階開發者的深入教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源