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")

python paddle 线性回归_第1张图片

你可能感兴趣的:(paddlepaddle,python)