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