我想要确切的价值 损失太大 即使你长高20厘米,我也只会增加一点点体重。 但具体数值没有出来。 我试过降低学习率,但是只降低一个学习率并没有解决这个问题
w = 0.0
b = 0.0
lr = 0.0001
def predict(x):
y_pred = w*x + b
return y_pred
def mse_loss(y_true, y_pred):
mse = np.mean((y_true - y_pred)**2)
return mse
def train(X, y, w, b, lr, epochs):
for epoch in range(epochs):
y_pred = predict(X)
loss = mse_loss(y, y_pred)
grad_w = np.mean((y_pred - y)*X)
grad_b = np.mean(y_pred - y)
w = w - lr*grad_w
b = b - lr*grad_b
if epoch % 100 == 0:
print("Epoch %d: loss=%.4f, w=%.4f, b=%.4f" % (epoch, loss, w, b))
return w, b
w, b = train(X, y, w, b, lr, epochs=1000)
我想得到一个更准确的值。我试过 但损失太大 请帮助我
change lr
lr = 0.0000001
change epochs
w, b = train(X, y, w, b, lr, epochs=280)
lr 是学习率。学习率越小,通常收敛的时间越长。如果你最初使用了 1000 个 epoch,那么你以后需要更多的 epoch。
或者,根据我的收敛经验,最好定义一个你想要的目标答案,然后设置 lr = 0.00001 并保持减半,一遍又一遍地运行代码。与其运行多个 epoch,不如运行它直到给出正确答案。这样你就可以看到梯度下降法收敛的速度有多慢。
根据 Stephen Boyd 的书,许多下降方法的学习率在 0.2-0.5 范围内,但也许您正在解决一个非常具体的问题,该问题不适用于如此大的值。
这些只是建议。我可能完全找错了树。