快捷方式

torch.autograd.gradcheck.gradcheck

torch.autograd.gradcheck.gradcheck(func, inputs, *, eps=1e-06, atol=1e-05, rtol=0.001, raise_exception=True, nondet_tol=0.0, check_undefined_grad=True, check_grad_dtypes=False, check_batched_grad=False, check_batched_forward_grad=False, check_forward_ad=False, check_backward_ad=True, fast_mode=False, masked=None)[原始碼][原始碼]

檢查透過小的有限差分計算的梯度與 inputs 中浮點或複數型別且 requires_grad=True 的張量對應的解析梯度是否一致。

數值梯度與解析梯度之間的檢查使用 allclose()

對於大多數出於最佳化目的而考慮的複數函式,沒有雅可比矩陣的概念。相反,gradcheck 會驗證 Wirtinger 和共軛 Wirtinger 導數的數值和解析值是否一致。由於梯度計算是在函式整體具有實數值輸出的假設下進行的,因此我們對具有複數輸出的函式進行特殊處理。對於這些函式,gradcheck 應用於兩個實值函式,分別對應於取複數輸出的實部和虛部。有關更多詳細資訊,請參閱 複數的 Autograd

註解

預設值是針對雙精度 input 設計的。如果 input 精度較低,例如 FloatTensor,則此檢查可能會失敗。

註解

在不可微點上求值時,Gradcheck 可能會失敗,因為透過有限差分計算的數值梯度可能與解析計算的梯度不同(不一定是因為其中一個不正確)。有關更多背景資訊,請參閱 不可微函式的梯度

警告

如果 input 中任何被檢查的張量具有重疊記憶體,即不同索引指向同一記憶體地址(例如,來自 torch.Tensor.expand()),則此檢查很可能會失敗,因為透過點擾動在這些索引處計算的數值梯度將改變共享同一記憶體地址的所有其他索引處的值。

引數
  • func (function) – 接受張量輸入並返回張量或張量元組的 Python 函式

  • inputs (tuple of Tensor or Tensor) – 函式的輸入

  • eps (float, 可選) – 有限差分的擾動量

  • atol (float, 可選) – 絕對容差

  • rtol (float, 可選) – 相對容差

  • raise_exception (bool, 可選) – 指示如果檢查失敗是否丟擲異常。異常提供了有關失敗確切性質的更多資訊。這有助於除錯 gradchecks。

  • nondet_tol (float, 可選) – 非確定性容差。當透過相同的輸入執行微分時,結果必須完全匹配(預設值 0.0)或在此容差範圍內。

  • check_undefined_grad (bool, 可選) – 如果為 True,檢查是否支援未定義的輸出梯度並將其視為零(對於 Tensor 輸出)。

  • check_batched_grad (bool, 可選) – 如果為 True,檢查是否可以使用原型 vmap 支援計算批次梯度。預設為 False。

  • check_batched_forward_grad (bool, 可選) – 如果為 True,檢查是否可以使用前向模式 AD 和原型 vmap 支援計算批次前向梯度。預設為 False

  • check_forward_ad (bool, 可選) – 如果為 True,檢查使用前向模式 AD 計算的梯度是否與數值梯度匹配。預設為 False

  • check_backward_ad (bool, 可選) – 如果為 False,則不執行任何依賴於後向模式 AD 實現的檢查。預設為 True

  • fast_mode (bool, 可選) – gradcheck 和 gradgradcheck 的快速模式目前僅為 R 到 R 函式實現。如果輸入和輸出都不是複數,則執行一個不再計算整個雅可比矩陣的更快的 gradcheck 實現;否則,回退到慢速實現。

  • masked (bool, 可選) – 如果為 True,則忽略稀疏張量未指定元素的梯度。預設為 False

返回

True 如果所有差異都滿足 allclose 條件

返回型別

bool

文件

訪問 PyTorch 的全面開發者文件

檢視文件

教程

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

檢視教程

資源

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

檢視資源