百度飞浆: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)
复制代码
相关推荐
觅特科技-互站1 天前
陌讯AI视觉赋能政企园区:国家级高新区实现人流超限自动广播与工单闭环
人工智能·排序算法·线性回归
marteker1 天前
IAB致力于实现可互操作的媒体测量标准化
搜索引擎·百度·媒体
A尘埃2 天前
零售连锁店生鲜品类销量预测——线性回归(Linear Regression)
算法·线性回归·零售
狒狒热知识2 天前
破局同质化内卷:爱玛2026马年营销,以热爱为刃,铸就行业年轻化标杆
百度·产品运营·营销
zandy10112 天前
AI驱动全球销售商机管理:钉钉DingTalk A1的跨域管理智能解决方案
人工智能·百度·钉钉
陈思杰系统思考Jason2 天前
系统问题误作态度问题
百度·微信·微信公众平台·新浪微博·微信开放平台
屁股割了还要学3 天前
百度网盘网页免vip ---> 高清晰度 + 字幕
经验分享·百度
生活观察站3 天前
新华网×赛迪网双重肯定:销售易AI CRM入选“AI中国”生态范式集
人工智能·百度
杜家老五4 天前
综合实力与专业服务深度解析 2026北京网站制作公司六大优选
数据结构·算法·线性回归·启发式算法·模拟退火算法