我陷入了在python中实现渐变下降的地步。
梯度下降的公式为:
for iter in range(1, num_iters):
hypo_function = np.sum(np.dot(np.dot(theta.T, X)-y, X[:,iter]))
theta_0 = theta[0] - alpha * (1.0 / m) * hypo_function
theta_1 = theta[1] - alpha * (1.0 / m) * hypo_function
出现错误:
---> hypo_function = np.sum(np.dot(np.dot(theta.T,X)-y,X [:,iter])) ValueError:形状(1,97)和(2,)未对齐:97(暗淡1)!= 2(暗淡0)
PS:这里我的X是(2L,97L),y是(97L,)theta是(2L,)。
答案 0 :(得分:1)
np.dot(a,b)取a和b的内积,如果a和b是向量(1-D数组)如果a和b是2D数组, np .dot(a,b)进行矩阵乘法。
如果a的最后一个维度的大小与b的倒数第二个维度之间存在不匹配,则会抛出ValueError。他们必须匹配。
在你的情况下,你试图在你的一个点积中乘以一个2个数组的数组乘以97个数组,所以存在不匹配。所以你需要修改输入数据,这样点积/矩阵乘法是可计算的。