如何修改? [关闭]

问题描述 投票:0回答:1

我想要确切的价值 损失太大 即使你长高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)
python python-3.x linear-regression
1个回答
-1
投票

lr 是学习率。学习率越小,通常收敛的时间越长。如果你最初使用了 1000 个 epoch,那么你以后需要更多的 epoch。

或者,根据我的收敛经验,最好定义一个你想要的目标答案,然后设置 lr = 0.00001 并保持减半,一遍又一遍地运行代码。与其运行多个 epoch,不如运行它直到给出正确答案。这样你就可以看到梯度下降法收敛的速度有多慢。

根据 Stephen Boyd 的书,许多下降方法的学习率在 0.2-0.5 范围内,但也许您正在解决一个非常具体的问题,该问题不适用于如此大的值。

这些只是建议。我可能完全找错了树。

© www.soinside.com 2019 - 2024. All rights reserved.