python-3.x 如何修改?[关闭]

8tntrjer  于 2023-03-31  发布在  Python
关注(0)|答案(1)|浏览(162)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

6天前关闭。
Improve this question
i want the exact value loss is too big即使你长高了20cm,我也只增加了一点点体重,但确切值没有出来,我试过降低学习率,但这个问题并没有通过只降低一个学习率来解决。

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)
k5ifujac

k5ifujac1#

lr是学习率。学习率越小,通常收敛的时间越长。如果你最初使用1000个epoch,那么你需要更多的epoch(如果你将学习率除以10)。
或者,根据我的收敛经验,最好定义一个你想要的目标答案,然后设置例如lr = 0.00001,并保持一半,一遍又一遍地运行代码。与其运行许多epoch,运行它直到它给出正确的答案。这样你就可以看到梯度下降法收敛的速度有多慢。
根据Stephen Boyd的书,许多下降方法的学习率在0.2-0.5的范围内,但也许你正在解决一个非常具体的问题,这个问题在如此大的值下不起作用。
这些只是建议,我可能完全找错了对象。

相关问题