自定义数据集 使用paddlepaddle框架实现逻辑回归

导入必要的库

复制代码
import numpy as np
import paddle
import paddle.nn as nn

数据准备:

复制代码
seed=1
paddle.seed(seed)

# 1.散点输入 定义输入数据
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]]
#转化为数组
data=np.array(data)
# 提取x 和y
x_data=data[:,0]
y_data=data[:,1]
#转成张量 转成paddlepaddle张量
x_train=paddle.to_tensor(x_data,dtype=paddle.float32)
y_train=paddle.to_tensor(y_data,dtype=paddle.float32)

定义模型:

复制代码
class LinearModel(nn.Layer):
    def __init__(self):
       super(LinearModel,self).__init__()
       self.linear=nn.Linear(1,1)
    def forward(self,x):
        x=self.linear(x)
        return x
#定义模型的对象
model=LinearModel()

损失函数和优化器:

复制代码
#3.1损失函数
criterion=paddle.nn.MSELoss()
#3.2 优化器
optimizer=paddle.optimizer.SGD(learning_rate=0.01, parameters=model.parameters())

模型训练和保存:

python 复制代码
epochs=500
final_checkpoint={}
for epoch in range(1,epochs+1):
    #前向传播
    #unsqueeze()扩展一维
    y_prd=model(x_train.unsqueeze(1))
    loss=criterion(y_prd.squeeze(1),y_train)
    #清除之前计算的梯度
    optimizer.clear_grad()
    #自动计算梯度
    loss.backward()
    #更新参数
    optimizer.step()
    # 5.显示频率的设置
    if epoch % 10==0 or epoch==1:
        #可以使用float(loss)或者 loss.numpy()会报警告
        print(f"epoch:{epoch},loss:{float(loss)}")
    #添加检查点程序
    if epoch==epochs:
        #把迭代次数写入
        final_checkpoint['epoch']=epoch
        #把训练损失写入
        final_checkpoint['loss']=loss

#基础API模型的保存
paddle.save(model.state_dict(),'./基础API/model.pdparams')
#保存检查点checkpoint信息 是序列化的文件
paddle.save(final_checkpoint, "./基础API/final_checkpoint.pkl")

模型加载及预测:

python 复制代码
#基础API模型的加载
model_state_dict=paddle.load('./基础API/model.pdparams')
# optimizer_state_dict=paddle.load('./基础API/optimizer.pdopt')
final_checkpoint_state_dict=paddle.load('./基础API/final_checkpoint.pkl')
print(final_checkpoint_state_dict)

#模型和参数联系起来
model.set_state_dict(model_state_dict)

#训练 评估 和推理
# 模型验证模式
model.eval()
#使用TensorDateset 和DateLoader封装
dataloader_test=DataLoader(TensorDataset([paddle.to_tensor([1.5],dtype=paddle.float32)]),batch_size=1)

#迭代
for x_test in dataloader_test:
    predict=model(x_test[0])
    print(predict)

结果展示:

相关推荐
咚咚王者7 分钟前
人工智能之核心基础 机器学习 第十三章 自监督学习
人工智能·学习·机器学习
liliangcsdn10 分钟前
LLM训练中batchsize与过拟合和泛化的关系
人工智能·算法·机器学习
Hcoco_me18 分钟前
大模型面试题64:介绍下PPO的训练流程
人工智能·深度学习·机器学习·chatgpt·机器人
高洁0120 分钟前
AI智能体搭建(2)
人工智能·深度学习·算法·机器学习·知识图谱
数据分享者25 分钟前
汽车价格预测模型评估数据集分析:基于LightAutoML的多模型融合预测结果与性能对比-机器学习-优化汽车价格预测模型-丰富的模型对比实验数据
人工智能·机器学习·数据挖掘·汽车
minhuan25 分钟前
大模型应用:量化校准:全局/分组 Min-Max、GPTQ、AWQ 算法最优匹配.54
人工智能·机器学习·量化校准·gptq量化误差补偿·awq权重均衡
知乎的哥廷根数学学派9 小时前
面向可信机械故障诊断的自适应置信度惩罚深度校准算法(Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习·矩阵
数字化转型20259 小时前
企业数字化架构集成能力建设
大数据·程序人生·机器学习
知乎的哥廷根数学学派11 小时前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
知乎的哥廷根数学学派11 小时前
基于自适应多尺度小波核编码与注意力增强的脉冲神经网络机械故障诊断(Pytorch)
人工智能·pytorch·python·深度学习·神经网络·机器学习