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

自定义数据集:通过继承 paddle.io.Dataset 类创建自定义数据集,并重写 getitemlen 方法。

定义逻辑回归模型:继承 paddle.nn.Layer 类,定义一个简单的线性层,并在 forward 方法中应用sigmoid激活函数。

训练模型:使用二元交叉熵损失函数 BCELoss 和随机梯度下降优化器 SGD 进行训练。

保存模型:使用 paddle.save 保存模型的参数。

加载模型并预测:加载保存的模型参数,设置模型为评估模式,然后对新数据进行预测。

import paddle

import numpy as np

from paddle.io import Dataset, DataLoader

自定义数据集

class MyDataset(Dataset):

def init(self, data, labels):

self.data = data

self.labels = labels

def getitem(self, idx):

return self.dataidx, self.labelsidx

def len(self):

return len(self.data)

生成一些自定义数据

np.random.seed(0)

data = np.random.randn(100, 10).astype('float32')

labels = np.random.randint(0, 2, size=(100, 1)).astype('float32')

创建数据集和数据加载器

dataset = MyDataset(data, labels)

dataloader = DataLoader(dataset, batch_size=10, shuffle=True)

定义逻辑回归模型

class LogisticRegression(paddle.nn.Layer):

def init(self, input_dim):

super(LogisticRegression, self).init()

self.linear = paddle.nn.Linear(input_dim, 1)

def forward(self, x):

return paddle.nn.functional.sigmoid(self.linear(x))

model = LogisticRegression(input_dim=10)

定义损失函数和优化器

criterion = paddle.nn.BCELoss()

optimizer = paddle.optimizer.SGD(learning_rate=0.01, parameters=model.parameters())

训练模型

num_epochs = 100

for epoch in range(num_epochs):

for batch_data, batch_labels in dataloader:

optimizer.clear_grad()

outputs = model(batch_data)

loss = criterion(outputs, batch_labels)

loss.backward()

optimizer.step()

if (epoch + 1) % 10 == 0:

print(f'Epoch {epoch + 1}/{num_epochs}, Loss: {loss.item():.4f}')

保存模型

paddle.save(model.state_dict(), 'logistic_regression.pdparams')

加载模型进行预测

loaded_model = LogisticRegression(input_dim=10)

loaded_model.set_state_dict(paddle.load('logistic_regression.pdparams'))

loaded_model.eval()

进行预测

new_data = np.random.randn(10, 10).astype('float32')

new_data = paddle.to_tensor(new_data)

predictions = loaded_model(new_data)

print("Predictions:")

print(predictions)

相关推荐
richard_first14 小时前
Transformer与大语言模型:第13章 Decoder
人工智能·机器学习
罗西的思考1 天前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
147API1 天前
评测分数不理想,什么时候值得补蒸馏数据
人工智能·深度学习·机器学习
张人玉1 天前
基于 Python 机器学习 与 PyQt5 桌面框架开发的可视化分析系统——基于大数据的网上购物消费行为分析可视化大屏
python·qt·机器学习·echarts·three.js
JoannaJuanCV1 天前
VLM学习-SFT(监督微调)
深度学习·学习·机器学习·大模型·视觉大模型·vlm·视觉编码器
音视频牛哥1 天前
拆解人形机器人:从关节、灵巧手到VLA与媒体神经系统
机器学习·计算机视觉·机器人
xiaokcehui1 天前
地球物理大地测量学计算系列之十七局部重力场SRBF逼近及其性能指标测评
人工智能·算法·机器学习
宣宣猪的小花园.1 天前
【控制算法】PID 不只是三个参数:比例、积分、微分各在解决什么问题
人工智能·嵌入式硬件·机器学习
java1234_小锋1 天前
YOLO26 计算机视觉 - 训练自己的 YOLO26 模型
人工智能·yolo·机器学习·计算机视觉·yolo26
满怀冰雪1 天前
23-PaddleClas 数据集、配置文件与训练参数详解
人工智能·python·深度学习·paddlepaddle