我在实施scipy.optimize.minimize()
时遇到了一些麻烦。
它返回错误ValueError: Objective function must return a scalar
。
这是我的代码:
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,)
。< / p>
我似乎错过了一些非常微不足道的事情。任何帮助,将不胜感激。提前致谢!
答案 0 :(得分:0)
您的函数的签名,以最小化需求{
"kind": "drive#revisionList",
"nextPageToken": string,
"revisions": [
{
"kind": "drive#revision",
"id": string,
"mimeType": string,
"modifiedTime": datetime,
"lastModifyingUser": {
"kind": "drive#user",
"displayName": string,
"emailAddress": string
},
"originalFilename": string,
"size": long
}
]
}
作为第一个非关键字参数;其他人可能会跟随。
(所以内部你的变量映射是错误的,因此你的形状会产生一个不同于标量的不同结果形状)
我也没有在您的代码中看到x
的使用!可能是curve
?
所以只需改变:
curve = b