快捷方式

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.expand()),则此检查可能会失败,因为在这些索引处通过点扰动计算的数值梯度会更改共享相同内存地址的所有其他索引的值。

参数
  • func (函数) – 一个 Python 函数,它接受张量输入并返回一个张量或一个张量元组

  • inputs (元组张量张量) – 函数的输入

  • eps (浮点数, 可选) – 有限差分的扰动

  • atol (浮点数, 可选) – 绝对容差

  • rtol (浮点数, 可选) – 相对容差

  • raise_exception (布尔值, 可选) – 指示如果检查失败是否引发异常。异常提供了有关失败确切性质的更多信息。这在调试 gradcheck 时很有帮助。

  • nondet_tol (浮点数, 可选) – 非确定性的容差。当通过微分运行相同的输入时,结果必须完全匹配(默认值,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

返回值

如果所有差异都满足 allclose 条件,则返回 True

返回类型

bool

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取适合初学者和高级开发者的深度教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源