我编写了一个梯度下降函数,并使用pandas读取csv文件。但是当我使用pandas读取的数据时,函数返回了”nan”。我无法理解这是为什么。
提前感谢。
def gradient_descent(X, Y, w, b, alpha): dl_dw = 0.0 dl_db = 0.0 N = len(X) for i in range(N): dl_dw += -1*float(X[i]) * (float(Y[i]) - (w*float(X[i]) + b)) dl_db += -1*(float(Y[i]) - (float(w*X[i]) + b)) w = w - (1/float(N)) * dl_dw * alpha b = b - (1/float(N)) * dl_db * alphareturn w, bimport pandas as pd data = pd.read_csv("train.csv") print(data.head()) X = data.iloc[:, 0].values.reshape(-1, 1) Y = data.iloc[:, 1].values.reshape(-1, 1)print(gradient_descent(X, Y, 0.0, 0.0, 100))
回答:
这可能是梯度消失的问题。你的梯度可能非常接近甚至为零。尝试用非零值初始化你的权重。