approx_fprime - ValueError:使用序列设置数组元素

时间:2018-04-27 16:16:04

标签: python-2.7 machine-learning scipy gradient conv-neural-network

执行approx_fprime

时,我收到错误(标题)
import numpy as np
import scipy.optimize as op
def J(x):
    return x*x

xk = np.arange(1,10).reshape(3,3).astype('float32')
print(op.approx_fprime(xk.ravel(), J, 0.01))

我做错了什么?

我必须更改函数,它应该返回标量而不是向量。

def J(x): 
    return np.sum(x**2)

1 个答案:

答案 0 :(得分:1)

您使approx_fprime的假设无效:

  

标量函数的梯度的有限差分近似

     

参数:

     

...

     

f:callable

     

确定梯度的函数(偏导数)。应该将xk作为第一个参数,f的其他参数可以在* args中提供。 应返回标量,xk函数的值

在这种情况下,您将返回一个大小为9的向量。这不是标量函数应返回的内容。原因很简单:

x = np.array([1,2,3])
print((x*x).shape)
# (3,)