我有一个功能,我想最小化。它是普通最小二乘的矢量化版本。
import numpy as np
from scipy import optimize
def lr_cost_function(theta, x, y, derivative = False, hypotesis=linear_hypotesis, polynom = 1):
hyp = hypotesis(theta, x, polynom)
print("Hyp: ", hyp.shape)
dif = hyp - y
print("Dif:", dif.shape)
reuslt = dot(dif.T,dif)
print("RES", reuslt.shape)
return 1/len(y)*(dot(dif.T,dif)[0,0])
def linear_hypotesis(theta, x, polynom = 1):
print(x.shape, theta.shape, type(theta))
return np.dot(x, theta)
所以我这样称呼最小化:
optimize.minimize(fun=lr_cost_function, x0=theta_copy, args=(x, y))
并且我的代码无法完成,因为在optimize.py参数x0 flatten中我的矢量化被完全打破(0.13.2 scipy版本中的第822行)。我甚至无法完成代码并看到结果,因为我没有足够的内存,一切都出错了计算dif。
答案 0 :(得分:0)
我对数组的维度有点混乱,所以得到了这个错误。我的theta(它是2-D数组)应该是扁平化的,并且代码中的所有向量(也是2-D数组)都应该变平,因此代码可以在最小的变化下工作。