快速鍵

torch.autograd.gradcheck.gradgradcheck

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

檢查透過小幅度有限差分 (small finite differences) 計算出的梯度之梯度,與相對於 inputsgrad_outputs 中具有浮點數或複數類型,且 requires_grad=True 之 tensors 的解析梯度 (analytical gradients) 是否一致。

此函式檢查透過計算給定 grad_outputs 的梯度進行反向傳播是否正確。

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

注意

預設值是為雙精度 (double precision) 的 inputgrad_outputs 所設計的。 如果它們的精度較低,例如 FloatTensor,此檢查很可能會失敗。

警告

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

參數
  • func (function) – 一個 Python 函式,它接受 Tensor 輸入並返回一個 Tensor 或一個 Tensors 的 tuple

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

  • grad_outputs (tuple of TensorTensor, optional) – 相對於函式輸出的梯度。

  • eps (float, optional) – 用於有限差分的擾動 (perturbation)

  • atol (float, optional) – 絕對容忍度 (absolute tolerance)

  • rtol (float, optional) – 相對容忍度 (relative tolerance)

  • gen_non_contig_grad_outputs (bool, optional) – 如果 grad_outputsNonegen_non_contig_grad_outputsTrue,則隨機產生的梯度輸出將被設置為非連續 (noncontiguous)

  • raise_exception (bool, optional) – 指示如果檢查失敗是否引發異常。 該異常提供了有關失敗的確切性質的更多資訊。 這在調試 gradchecks 時很有用。

  • nondet_tol (float, optional) – 不確定性的容忍度 (tolerance for non-determinism)。 當通過微分運行相同的輸入時,結果必須完全匹配(預設值,0.0)或在此容忍度範圍內。 請注意,梯度中的少量不確定性將導致二階導數中較大的不準確性。

  • check_undefined_grad (bool, optional) – 如果為 True,則檢查是否支援未定義的輸出梯度並將其視為零

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

  • fast_mode (bool, optional) – 如果為 True,則執行 gradgradcheck 的更快實作,該實作不再計算完整的雅可比矩陣。

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

回傳值

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

回傳類型

bool

文件

取得 PyTorch 的完整開發者文件

檢視文件

教學課程

取得適合初學者和進階開發者的深入教學課程

檢視教學課程

資源

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

檢視資源