自定义数据集 使用paddlepaddle框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测

代码:

复制代码
# 导入必要的库
import numpy as np
import paddle
import paddle.nn as nn

# 设置随机种子,确保实验可重复
seed = 1
paddle.seed(seed)

# 数据集:一组二维数据,包含x和y的对应关系
data = [[-0.5, 7.7], [1.8, 98.5], [0.9, 57.8], [0.4, 39.2],
        [-1.4, -15.7], [-1.4, -37.3], [-1.8, -49.1], [1.5, 75.6],
        [0.4, 34.0], [0.8, 62.3]]

# 将数据转为NumPy数组格式
data = np.array(data)

# 分离特征(x)和标签(y),x是输入,y是输出
x_data = data[:, 0]
y_data = data[:, 1]

# 将数据转为Paddle张量类型,paddle.to_tensor用于转换
x_train = paddle.to_tensor(x_data, dtype=paddle.float32)
y_train = paddle.to_tensor(y_data, dtype=paddle.float32)


# 定义线性回归模型,继承自paddle.nn.Layer
class LinearModel(nn.Layer):
    def __init__(self):
        # 初始化时,定义一个线性层(1个输入特征和1个输出特征)
        super(LinearModel, self).__init__()
        self.linear = nn.Linear(1, 1)

    def forward(self, x):
        # 前向传播,输入x通过线性层计算输出
        x = self.linear(x)
        return x


# 实例化模型对象
model = LinearModel()

# 定义损失函数,这里使用均方误差(MSE)
criterion = paddle.nn.MSELoss()

# 定义优化器,这里使用SGD(随机梯度下降),学习率设置为0.01
optimizer = paddle.optimizer.SGD(learning_rate=0.01, parameters=model.parameters())

# 训练的迭代次数
epochs = 500
final_checkpoint = {}  # 保存最终训练结果

# 训练循环,迭代epochs次
for epoch in range(1, epochs + 1):
    # 通过模型计算预测值,模型输入x_train需要增加一个维度(因为nn.Linear需要二维输入)
    y_prd = model(x_train.unsqueeze(1))

    # 计算损失,y_prd是预测值,y_train是实际值
    loss = criterion(y_prd.squeeze(1), y_train)

    # 清空梯度
    optimizer.clear_grad()

    # 反向传播计算梯度
    loss.backward()

    # 更新模型参数
    optimizer.step()

    # 每10个epoch输出一次损失
    if epoch % 10 == 0 or epoch == 1:
        print(f"epoch:{epoch},loss:{float(loss)}")

    # 在最后一个epoch保存模型的状态
    if epoch == epochs:
        final_checkpoint['epoch'] = epoch
        final_checkpoint['loss'] = loss

# 保存模型参数到文件,方便之后加载
paddle.save(model.state_dict(), './model.params')

# 加载保存的模型参数
model.load_dict(paddle.load('./model.params'))
model.eval()  # 设置为评估模式(例如,关闭Dropout等)

# 使用训练后的模型进行预测
x_test = paddle.to_tensor([[1.8]], dtype=paddle.float32)
y_test = model(x_test)

# 打印预测结果
print(f'y_test:{y_test}')

结果:

相关推荐
芒果量化14 小时前
Optuna - 自动调参利器&python实例
开发语言·python·算法·机器学习
麦麦大数据14 小时前
D025 摩托车推荐价格预测可视化系统|推荐算法|机器学习|预测算法|用户画像与数据分析
mysql·算法·机器学习·django·vue·推荐算法·价格预测
樱花的浪漫16 小时前
Cuda reduce算子实现与优化
数据库·人工智能·深度学习·神经网络·机器学习·自然语言处理
繁依Fanyi16 小时前
Cloud Studio 免环境搭建创建机器学习环境并运行 Pytorch 案例
人工智能·pytorch·机器学习
B站_计算机毕业设计之家16 小时前
基于大数据股票数据分析与预测系统 LSTM神经网络算法 股票价格预测 Tensorflow深度学习 机器学习 Flask框架 东方财富(全套资料)✅
深度学习·神经网络·机器学习·金融·股票·预测·股价
吃饭睡觉发paper16 小时前
用于飞行时间深度去噪的空间层次感知残差金字塔网络
网络·人工智能·机器学习·计算机视觉
信息快讯17 小时前
【机器学习在智能水泥基复合材料中的应用与实践】
人工智能·机器学习·材料工程·复合材料·水泥基复合材料
JJJJ_iii18 小时前
【机器学习06】神经网络的实现、训练与向量化
人工智能·笔记·深度学习·神经网络·学习·机器学习·线性回归
末世灯光1 天前
时间序列入门第一问:它和普通数据有什么不一样?(附 3 类典型案例)
人工智能·python·机器学习·时序数据
Gitpchy1 天前
Day 20 奇异值SVD分解
python·机器学习