[SciPy-User] Checking Gradients with Scipy

Paul Manta paulc.mnt at gmail.com
Sat Feb 23 07:20:48 EST 2013


I want to use `scipy.optimize.check_grad` to check the gradient of my 
implementation of the sigmoid function; here's my Python function:

> def sigmoid(x, gradient=False):
>     y = 1 / (1 + numpy.exp(-x))
>     return numpy.multiply(y, 1 - y) if gradient else y


Here are the arguments and the call to `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)

I get the error below. The shape mismatch refers to the subtraction `f(*
((xk+d,)+args)) - f0`. Any idea what could be causing this and how I should fix 
it?

> File "scipy\optimize\optimize.py", line 597, in approx_fprime  
>    grad[k] = (f(*((xk+d,)+args)) - f0) / d[k]  
> ValueError: operands could not be broadcast together with shapes (4,5) (4)




More information about the SciPy-User mailing list