百度飞浆:paddle 线性回归模型

学习引用 参考视频:

https://www.bilibili.com/video/BV1oRtkeVEVx?spm_id_from=333.788.player.switch\&vd_source=c7739de98d044e74cdc74d6e772bed5f\&p=2

这段代码使用PaddlePaddle深度学习框架来实现一个简单的线性回归模型,旨在从给定的出租车行驶公里数和对应的支付费用中学习出租车的起步价和每公里行驶费用。下面我将逐行解释这段代码的功能:

  1. 导入数据

    python 复制代码
    x_data = paddle.to_tensor([[1.0], [3.0], [5.0], [9.0], [20.0]])
    y_data = paddle.to_tensor([[12.0],[16.0],[20.0],[28.0],[50.0]])

    这里,x_data表示行驶公里数,y_data表示对应的支付费用。它们都被转换为PaddlePaddle的张量(Tensor)格式,以便后续的计算。

  2. 定义线性模型

    python 复制代码
    linear = paddle.nn.Linear(in_features=1, out_features=1)

    定义一个线性模型(也称为全连接层或密集层),输入特征数为1(即公里数),输出特征数为1(即预测的费用)。

  3. 查看初始权重和偏置

    python 复制代码
    w_before_opt = linear.weight.numpy().item()
    b_before_opt = linear.bias.numpy().item()
    print(w_before_opt, b_before_opt)

    打印出模型初始化的权重和偏置值。这些值是随机初始化的。

  4. 定义损失函数和优化器

    python 复制代码
    mse_loss = paddle.nn.MSELoss()
    sgd_optimizer = paddle.optimizer.SGD(learning_rate=0.001, parameters=linear.parameters())

    使用均方误差(MSE)作为损失函数,因为这是一个回归问题。选择随机梯度下降(SGD)作为优化器,并设置学习率为0.001。

  5. 训练循环

    python 复制代码
    total_epoch = 5000
    for i in range(total_epoch):
        y_predict = linear(x_data)
        loss = mse_loss(y_predict, y_data)
        loss.backward()
        sgd_optimizer.step()
        sgd_optimizer.clear_gradients()

    进行5000次迭代(或称为epoch)。在每次迭代中,首先计算预测值y_predict,然后计算损失值loss,接着通过loss.backward()计算梯度,sgd_optimizer.step()更新模型参数,最后通过sgd_optimizer.clear_gradients()清除梯度,为下一次迭代做准备。

  6. 每1000次迭代打印一次损失

    python 复制代码
    if i % 1000 == 0:
        print(i, loss.numpy())

    为了监控训练过程,每1000次迭代打印一次当前的损失值。

  7. 训练结束后的操作和打印

    python 复制代码
    print("finish training, loss = {}".format(loss.numpy()))
    w_after_opt = linear.weight.numpy().item()
    b_after_opt = linear.bias.numpy().item()
    print(w_after_opt, b_after_opt)

    打印出训练结束后的最终损失值,以及优化后的权重和偏置值。这些值代表了学习到的起步价(偏置)和每公里费用(权重)。

总结

这段代码通过线性回归模型,从给定的出租车行驶公里数和支付费用数据中学习出租车的起步价和每公里行驶费用。通过多次迭代,模型逐渐调整其权重和偏置,以最小化预测费用与实际费用之间的均方误差。最终,模型学习到的权重和偏置值可以被解释为出租车的每公里费用和起步价。

```python
import paddle
# 任务乘坐出租车起步价10元,每公里2元
def calculate_fee(distance_travelled):
    return 10 + 2 * distance_travelled

for x in [1.0, 3.0, 5.0, 9.0, 20.0]:
    print(calculate_fee(x))

#知道乘客每次乘坐出租车公里数,也知道乘客每次下车支付费用
#求 起步价、以及每公里形式费用。目标让机器从这些数据当中学习出来计算费用的规则
x_data = paddle.to_tensor([[1.0], [3.0], [5.0], [9.0], [20.0]])
y_data = paddle.to_tensor([[12.0],[16.0],[20.0],[28.0],[50.0]])

linear = paddle.nn.Linear(in_features=1, out_features=1)
w_before_opt = linear.weight.numpy().item()
b_before_opt = linear.bias.numpy().item()
print(w_before_opt, b_before_opt)

mse_loss = paddle.nn.MSELoss()
sgd_optimizer = paddle.optimizer.SGD(learning_rate=0.001, parameters=linear.parameters())

total_epoch = 5000
for i in range(total_epoch):
    y_predict = linear(x_data)
    loss = mse_loss(y_predict, y_data)
    loss.backward()
    sgd_optimizer.step()
    sgd_optimizer.clear_gradients()

    if i % 1000 == 0:
        print(i, loss.numpy())

print("finish training, loss = {}".format(loss.numpy()))

w_after_opt = linear.weight.numpy().item()
b_after_opt = linear.bias.numpy().item()
print(w_after_opt, b_after_opt)
复制代码
相关推荐
dwjf3217 小时前
机器学习(四)-回归模型评估指标
人工智能·机器学习·线性回归
dwjf3218 小时前
机器学习(三)-多项式线性回归
人工智能·机器学习·线性回归
dwjf32115 小时前
机器学习(二)-简单线性回归
人工智能·机器学习·线性回归
love you joyfully1 天前
目标检测与R-CNN——pytorch与paddle实现目标检测与R-CNN
人工智能·pytorch·目标检测·cnn·paddle
正在走向自律2 天前
AI Agent案例全解析:百度营销智能体(8/30)
人工智能·百度·ai agent·工作流模式
看星猩的柴狗3 天前
机器学习-多元线性回归
人工智能·机器学习·线性回归
小风来临的时候3 天前
手机银行模拟器,一款高仿真银行app的模拟器,可以修改姓名 卡号 余额 做转账记录 做流水
笔记·百度·微信小程序·小程序·百度小程序
emmm2053 天前
paddle
paddle
百度智能云3 天前
百度智能云千帆AppBuilder升级,百度AI搜索组件上线,RAG支持无限容量向量存储!
人工智能·百度
kaoyaoyao3 天前
打通全网SEO优化:提高百度、B站、抖音等平台搜索排名
大数据·百度·seo·公众号排名优化·公众号排名