【发布时间】:2019-02-26 01:32:46
【问题描述】:
我一直在写这行代码 - 这是一个非常简单的代码行,让我很困惑。
我应该编写带有参数的梯度下降函数——权重、X、y、train_len(定义为 X 的行数)、alpha、learning_rate 和 num_iter。
The first derivative of the loss function wrt to weight is here. 我试过这样写代码:
for i in range(0, n_iter):
weights = weights - learning_rate * (np.multiply(-2, np.dot(X.transpose(), y - np.dot(X, weights))) + np.multiply(2*alpha, weights))
return weights
不幸的是,当我尝试使用梯度下降函数时,我得到了 nan。
【问题讨论】:
-
一般提示:写
X.T而不是X.transpose()和alpha*weights而不是np.multiply()。 -
什么时候收到
nans?经过一步还是多步?您在for循环中提供的唯一代码是什么? -
@cheersmate 我需要检查我什么时候得到了 nans,是的,我在 for 循环中的任何东西都在这里。
-
但是你不应该在每次迭代期间重新计算
X吗?您需要先进行前向传递,然后再进行反向传递...
标签: python-3.x numpy gradient-descent