我在文科实践中遇到这个问题,教授把实践扔了,没有任何解释,所以我一个人想了想,但问题没有解决好,所以我问了。
即使改变学习率和epochs,即使对输入数据进行归一化处理,w和b值也会改变,但损失值不会改变。当 w 和 b 值改变时,我应该修改哪个代码来改变损失值?另外,当前的损失值是5000个单位,那么要得到100个单位的损失值,我应该修改哪个代码呢?
import numpy as np
X = np.array([170, 175, 180, 165, 160, 185])
y = np.array([68, 75, 80, 55, 50, 90])
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)
我修改了epochs值和lr值。然而,虽然 w 和 b 的值发生了变化,但 loss 的值没有变化。我想实现一个程序,通过减少损失值来预测适合我身高的体重。