我想用来scipy.optimize.check_grad
检查我的sigmoid 函数实现的梯度;这是我的 Python 函数:
def sigmoid(x, gradient=False):
y = 1 / (1 + numpy.exp(-x))
return numpy.multiply(y, 1 - y) if gradient else y
以下是参数和对 的调用check_grad
:
x0 = numpy.random.uniform(-30, 30, (4, 5))
func = sigmoid
grad = lambda x: sigmoid(x, gradient=True)
error = scipy.optimize.check_grad(func, grad, x0)
我收到以下错误。形状不匹配是指操作xk+d
。知道是什么原因造成的吗?
文件“scipy\optimize\optimize.py”,第 597 行,在 approx_fprime
grad[k] = (f(*((xk+d,)+args)) - f0) / d[k]
ValueError: 操作数不能与形状一起广播 (4,5) (4)