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 :*参数,可选*参数,可选
传递给的额外参数 func 和 grad 。
- 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 已经是一个Generator
或RandomState
实例,则使用该实例。指定 seed 用于重现此函数的返回值。使用此种子生成的随机数会影响计算梯度以进行检查的随机向量grad
。请注意, seed 仅在以下情况下使用 direction 参数设置为 'random' 。
- func :可调用
- 退货
- err浮动
之差的平方和的平方根(即2范数)
grad(x0, *args)
和有限差分近似 grad 在这些点上使用函数 x0 。
示例
>>> 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