我在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我不知道如何对其进行矢量化或以更有效的方式编写它。
感谢您的帮助
答案 0 :(得分:4)
您无法对for循环进行矢量化,因为每次迭代都在更新状态。矢量化主要用于可以进行计算,使得每次迭代都计算独立(在某种意义上)结果。