• 文档 >
  • 自动微分包 - torch.autograd >
  • torch.autograd.gradcheck.gradgradcheck
快捷键

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)[source][source]

将通过小有限差分计算得到的梯度与相对于 inputsgrad_outputs 中的张量(浮点型或复数类型)的解析梯度进行比较。

此函数检查反向传播到给定 grad_outputs 的梯度是否正确。

数值梯度与解析梯度的检查使用 allclose()

注意

默认值是为双精度浮点数的 inputgrad_outputs 设计的。如果它们的精度更低,例如 FloatTensor ,则此检查可能会失败。

警告

如果 inputgrad_outputs 中的任何检查张量具有重叠的内存,即不同索引指向相同的内存地址(例如,来自 torch.Tensor.expand() ),则此检查可能会失败,因为在此类索引处通过点扰动计算的数值梯度将改变共享相同内存地址的所有其他索引的值。

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

  • inputs(Tensor 或 Tensor 的元组)- 函数的输入

  • grad_outputs (可选的 Tensor 或 Tensor 的元组) – 函数输出的梯度。

  • eps(可选的 float)- 有限差分的扰动

  • 绝对容差(float,可选)- 绝对容差

  • 相对容差(float,可选)- 相对容差

  • gen_non_contig_grad_outputs (可选的 bool) – 如果 grad_outputsNonegen_non_contig_grad_outputsTrue ,则随机生成的梯度输出将被设置为非连续。

  • raise_exception(bool,可选)- 指示是否在检查失败时引发异常。异常提供了关于失败确切性质的更多信息。这在调试 gradchecks 时很有帮助。

  • nondet_tol (可选的 float) – 非确定性的容差。当通过微分运行相同的输入时,结果必须完全匹配(默认值,0.0)或在此容差范围内。请注意,梯度中的少量非确定性会导致二阶导数的较大误差。

  • check_undefined_grad (可选的 bool) – 如果为 True,则检查是否支持将未定义的输出梯度视为零。

  • check_batched_grad (bool, 可选) – 如果为 True,则检查是否可以使用原型 vmap 支持来计算批处理梯度。默认为 False。

  • fast_mode (bool, 可选) – 如果为 True,则运行一个更快的 gradgradcheck 实现,不再计算整个雅可比矩阵。

  • masked (bool, 可选) – 如果为 True,则忽略稀疏张量中未指定的元素的梯度(默认为 False)。

返回值:

如果所有差异都满足 allclose 条件则为 True

返回类型:

布尔型


© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,主题由 Read the Docs 提供。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

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

查看资源