1. 引言
在这篇博客中,我们将使用PaddlePaddle框架实现一个逻辑回归模型,利用NumPy自定义数据集进行训练,并保存模型。最后,我们将演示如何加载保存的模型并进行预测。
2. 环境设置
首先,确保已安装PaddlePaddle和NumPy:
pip install paddlepaddle numpy
3. 数据集准备
我们使用NumPy自定义一个简单的二分类数据集:
import numpy as np
# 生成简单数据集 (特征和标签)
X = np.random.rand(100, 2) # 100个样本,2个特征
y = (X[:, 0] + X[:, 1] > 1).astype(int) # 简单规则:如果两个特征和大于1则为1,否则为0
4. 构建逻辑回归模型
使用PaddlePaddle构建逻辑回归模型:
import paddle
import paddle.nn as nn
import paddle.optimizer as optim
# 定义逻辑回归模型
class LogisticRegression(nn.Layer):
def __init__(self):
super(LogisticRegression, self).__init__()
self.linear = nn.Linear(2, 1) # 2个输入特征,1个输出
def forward(self, x):
return self.linear(x)
# 初始化模型
model = LogisticRegression()
5. 模型训练
使用交叉熵损失函数和SGD优化器进行训练:
# 转换数据为Paddle张量
X_train = paddle.to_tensor(X, dtype='float32')
y_train = paddle.to_tensor(y, dtype='float32').reshape([-1, 1])
# 定义损失函数和优化器
criterion = nn.BCEWithLogitsLoss()
optimizer = optim.SGD(parameters=model.parameters(), learning_rate=0.1)
# 训练模型
for epoch in range(1000):
model.train()
# 前向传播
logits = model(X_train)
loss = criterion(logits, y_train)
# 反向传播
loss.backward()
optimizer.step()
optimizer.clear_grad()
if (epoch + 1) % 100 == 0:
print(f'Epoch {epoch + 1}, Loss: {loss.numpy()}')
6. 保存模型
训练完成后保存模型:
# 保存模型
paddle.save(model.state_dict(), 'logistic_regression.pdparams')
7. 加载模型并进行预测
加载保存的模型并进行预测:
# 加载模型
model.load_dict(paddle.load('logistic_regression.pdparams'))
# 测试数据
X_test = np.array([[0.6, 0.7], [0.1, 0.2]])
X_test_tensor = paddle.to_tensor(X_test, dtype='float32')
# 进行预测
model.eval()
predictions = model(X_test_tensor)
predictions = predictions.numpy()
# 输出预测结果
print(f'Predictions: {predictions}')
8. 结语
通过以上步骤,我们成功地使用PaddlePaddle框架实现了一个简单的逻辑回归模型,并且在训练后保存了模型,加载并对新数据进行了预测。这种方式可以为更复杂的任务奠定基础。