scipy.optimize.check_grad

scipy.optimize.check_grad(func, grad, x0, *args, epsilon=1.4901161193847656e-08, direction='all', seed=None)[源代码]

通过将梯度函数与梯度的(正向)有限差分近似进行比较来检查梯度函数的正确性。

参数
func :可调用 func(x0, *args)可调用

要检查其导数的函数。

grad :可调用 grad(x0, *args)可调用

渐变 func

x0ndarray

要检查的点数 grad 反正向差分近似梯度的一种新方法 func

args :*参数,可选*参数,可选

传递给的额外参数 funcgrad

epsilon浮动,可选

用于有限差分近似的步长。默认为 sqrt(np.finfo(float).eps) ,约为1.49e-08。

direction字符串,可选

如果设置为 'random' ,然后使用沿随机向量的梯度来检查 grad 反正向差分近似使用 func 。默认情况下,它是 'all' 在这种情况下,所有一个热点方向向量都被认为是检查 grad

seed :{无,整型, numpy.random.Generator{无,整型,

如果 seed 为无(或 np.random )、 numpy.random.RandomState 使用的是Singleton。如果 seed 是一个整型、一个新的 RandomState 实例,其种子设定为 seed 。如果 seed 已经是一个 GeneratorRandomState 实例,则使用该实例。指定 seed 用于重现此函数的返回值。使用此种子生成的随机数会影响计算梯度以进行检查的随机向量 grad 。请注意, seed 仅在以下情况下使用 direction 参数设置为 'random'

退货
err浮动

之差的平方和的平方根(即2范数) grad(x0, *args) 和有限差分近似 grad 在这些点上使用函数 x0

参见

approx_fprime

示例

>>> def func(x):
...     return x[0]**2 - 0.5 * x[1]**3
>>> def grad(x):
...     return [2 * x[0], -1.5 * x[1]**2]
>>> from scipy.optimize import check_grad
>>> check_grad(func, grad, [1.5, -1.5])
2.9802322387695312e-08
>>> rng = np.random.default_rng()
>>> check_grad(func, grad, [1.5, -1.5], 
...             direction='random', seed=rng)
2.9802322387695312e-08