2014-10-06 82 views
3

我在numpy的实现了这个梯度下降:矢量化梯度下降numpy的

def gradientDescent(X, y, theta, alpha, iterations): 
    m = len(y) 

    for i in range(iterations): 
     h = np.dot(X,theta) 
     loss = h-y 
     theta = theta - (alpha/m)*np.dot(X.T, loss) #update theta 

    return theta 

而代码的其他部分完全还是一个在这里有矢量for循环,这似乎我不可能消除;特别要求在每一步更新theta我不明白我可以如何矢量化或以更有效的方式写它。

谢谢您的帮助

回答

4

你不能矢量化的循环,因为每个迭代更新状态。当计算可以完成时,主要使用向量化,以便每次迭代计算独立(某种意义上)的结果。

+1

好的,谢谢你指出 – 2014-10-07 14:07:02