python paddle 线性回归

python paddle 线性回归

"""
    简单线性回归
"""
import paddle.fluid as fluid
import paddle as pdl
import numpy as np
import matplotlib.pyplot as mp

# 1.定义数据
train_data = np.array([[1.0], [2.0], [3.0], [4.0]]).astype("float32")
y_true = np.array([[2.0], [4.0], [6.0], [8.0]]).astype("float32")

# 定义变量
x = fluid.layers.data(name="x", shape=[1], dtype="float32")
y = fluid.layers.data(name="y", shape=[1], dtype="float32")

# 2.搭建网络 (全链接,优化器)
model = fluid.layers.fc(input=x,  # 输入
                        size=1,  # 输出值的个数
                        act=None)  # 指定激活函数

# 损失函数--均方误差
cost = fluid.layers.square_error_cost(input=model,  # 预测值
                                      label=y)  # 期望值
avg_cost = fluid.layers.mean(cost)  # 求损失函数的 均方差

# 使用随机梯度下降优化器
optimizer = fluid.optimizer.SGD(learning_rate=0.01)
optimizer.minimize(avg_cost)  # 求最小均方差

# 3.创建执行器 初始化变量
place = fluid.CPUPlace()  # 指定在CPU上运行
exe = fluid.Executor(place)  # 执行器
exe.run(fluid.default_startup_program())  # 初始化系统参数

# 保存过程结果
costs = []  # 每一步的损失
iters = []  # 迭代次数
values = []  # 预测出来的值

# 数据准备
params = {"x": train_data, "y": y_true}  # 数据

# 循环训练
for i in range(200):
    outs = exe.run(feed=params,  # 喂入数据
                   fetch_list=[model, avg_cost.name])

    iters.append(i)
    costs.append(outs[1][0])  # 损失值
    values.append(outs[0][0])  # 预测值
    print(i, ":", outs[1][0])  # 每一步损失值

# 4.训练过程可视化
mp.title("Training cost", fontsize=24)
mp.xlabel("iter", fontsize=14)
mp.ylabel("cost", fontsize=14)

mp.plot(iters, costs, color="red", label="Training Costs")
mp.plot(iters, values, color="b", label="Predict Value")
mp.legend()
mp.grid(linestyle=":")

mp.show()
mp.savefig("train.png")

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廷益--飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值