麻烦实施scipy优化最小化
问题描述:
我在实施scipy.optimize.minimize()
时遇到了一些麻烦。 它返回我与错误ValueError: Objective function must return a scalar
。 这里是我的代码:麻烦实施scipy优化最小化
def cost(A,b,x):
return np.sum(np.square(np.dot(A,x)-b))
def sse(x):
return 1-sum(x)
x0 = np.ones(4)/4
bounds = tuple((0,1) for x in x0)
cons = ({'type': 'eq', 'fun': sse})
All = minimize(cost, x0, args=(A, curve), method='SLSQP', bounds=bounds, constraints=cons).x
A
具有形状(400,4)
,curve
具有形状(400,)
和x
,x0
具有形状(4,)
。
我似乎错过了一些非常微不足道的东西。任何帮助,将不胜感激。提前致谢!
答
您的函数的签名以最小化需求作为第一个非关键字参数x
;那么其他人可能会跟随。
(所以你的内部变量映射是错误的,因此你的形状产生不同的结果,形状不标)
我还没有看到你的代码的任何使用curve
!可能curve = b
?
所以只是改变:
def cost(A,b,x): # WRONG
return np.sum(np.square(np.dot(A,x)-b))
def cost(x, A, b): # CORRECT
return np.sum(np.square(np.dot(A,x)-b))
谢谢!得到它了。另外,'curve'被传递给函数中的'b'变量。 –
是的,但我不喜欢那些不同的名字。很难遵循imho。 – sascha
啊!好的!将考虑到这一点。 –