修改代码降低损失值

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

我在文科实践中遇到这个问题,教授把实践扔了,没有任何解释,所以我一个人想了想,但问题没有解决好,所以我问了。

即使改变学习率和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 的值没有变化。我想实现一个程序,通过减少损失值来预测适合我身高的体重。

python linear-regression loss-function
© www.soinside.com 2019 - 2024. All rights reserved.