捷徑

torch.Tensor.backward

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

計算目前張量對於圖葉的梯度。

此圖使用鏈式法則進行微分。如果張量是非純量(即其資料有多個元素)且需要梯度,則該函式還需要指定一個 gradient。它應該是一個與類型和形狀相符的張量,表示關於 self 的微分函式的梯度。

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

注意

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

注意

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

參數
  • gradient (Tensor, optional) – 關於 self 的微分函式的梯度。如果 self 是一個純量,則可以省略此引數。

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

  • create_graph (bool, optional) – 如果 True,則將建構導數的圖,允許計算更高階的導數乘積。預設為 False

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

文件

取得 PyTorch 的完整開發人員文件

檢視文件

教學課程

取得適用於初學者和進階開發人員的深入教學課程

檢視教學課程

資源

尋找開發資源並取得您問題的解答

檢視資源