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

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

 

定义逻辑回归模型:继承  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.data[idx], self.labels[idx]

 

    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)

### PaddlePaddle 使用模型预测的方法 在 PaddlePaddle 中,完成模型预测的核心步骤包括加载保存模型参数、准备输入数据以及运行推理过程。以下是详细的说明和示例代码。 #### 加载模型参数 通过 `paddle.load` 方法可以从文件中恢复之前保存模型状态字典(state dict)。这一步骤对于重新初始化模型至关重要[^1]。 ```python import paddle # 定义模型结构 (假设这里是一个线性回归模型) class LinearRegression(paddle.nn.Layer): def __init__(self): super(LinearRegression, self).__init__() self.fc = paddle.nn.Linear(in_features=1, out_features=1) def forward(self, inputs): return self.fc(inputs) model = LinearRegression() # 加载先前保存模型参数 param_state_dict = paddle.load("LR_model.pdparams") model.set_state_dict(param_state_dict) print("模型参数加载成功!") ``` #### 准备输入数据 为了进行预测,需要准备好待预测数据将其转换为适合模型的形式。如果使用的是自定义数据集,则需确保其格式与训练阶段一致[^5]。 ```python # 创建测试样本 test_data = [[2.0], [3.0], [4.0]] test_tensor = paddle.to_tensor(test_data, dtype='float32') ``` #### 执行预测操作 设置模型为评估模式 (`eval`) 后即可执行前向传播得到预测结果。注意,在此过程中不会更新任何权重或梯度信息。 ```python model.eval() with paddle.no_grad(): predictions = model(test_tensor) print("预测结果:", predictions.numpy()) ``` 以上即完成了基于 PaddlePaddle 的基本预测流程展示。实际应用时可能还需要考虑更多细节如异常处理等。 ### 预测中的注意事项 - 如果采用预训练模型作为基础架构的一部分来进行迁移学习或其他高级任务,则应先获取对应版本号下的官方支持模块通过工具类接口实例化对象后再做进一步调整优化[^3]。 - 对于复杂网络而言,除了简单的全连接层之外还可能存在卷积核大小变化等多种情况因此建议参照具体框架文档指南编写相应部分逻辑实现[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值