当前位置: 首页 > news >正文

网站推广服务算中介吗wordpress php页面跳转

网站推广服务算中介吗,wordpress php页面跳转,wordpress 博客 模板,怎么用word做一个网站文章目录 机器学习与深度学习——使用paddle实现随机梯度下降算法SGD对波士顿房价数据进行线性回归和预测一、任务二、流程三、完整代码四、代码解析五、效果截图 机器学习与深度学习——使用paddle实现随机梯度下降算法SGD对波士顿房价数据进行线性回归和预测 随机梯度下降SGD也称为增量梯度下降是一种迭代方法用于优化可微分目标函数。该方法通过在小批量数据上计算损失函数的梯度而迭代地更新权重与偏置项。SGD在高度非凸的损失表面上远远超越了朴素梯度下降法这种简单的爬山法技术已经主导了现代的非凸优化。 一、任务 使用Paddle实现随机梯度下降SGD算法对波士顿房价数据进行线性回归的训练给出每次迭代的权重、损失和梯度并进行房价预测值与真实房价值对比。 二、流程 1、导入必要的库和模块PaddlePaddle深度学习框架、numpy、os等常用的包和库。 2、读取数据并进行预处理。将数据进行归一化处理将训练集和测试集划分为7:3的比例。 3、定义线性回归模型。自定义类 Regressor 继承自 paddle.nn.Layer 初始化函数中定义了一个全连接层。该全连接层的输入维度为13输出维度为1。 4、构建模型并训练。调用 Regressor() 函数生成模型使用随机梯度下降法进行训练。。 5、模型预测。运用之前训练好的模型进行前向计算得到预测结果。 6、反归一化处理。进行反归一化处理得到原始的房价估计值。 输出结果。将得到的预测结果和真实标签值进行比较并输出预测房价的结果和真实房价结果。 三、完整代码 使用Paddle实现随机梯度下降SGD算法对波士顿房价数据进行线性回归的训练给出每次迭代的权重、损失和梯度并进行房价预测值与真实房价值对比。 #导入必要的包和库 import paddle from paddle.nn import Linear import paddle.nn.functional as F import numpy as np import os import randomdef load_data():# 从文件导入数据datafile ./work/housing.datadata np.fromfile(datafile, sep , dtypenp.float32)# 每条数据包括14项其中前面13项是影响因素第14项是相应的房屋价格中位数feature_names [CRIM, ZN, INDUS, CHAS, NOX, RM, AGE, \DIS, RAD, TAX, PTRATIO, B, LSTAT, MEDV]feature_num len(feature_names)# 将原始数据进行Reshape变成[N, 14]这样的形状data data.reshape([data.shape[0] // feature_num, feature_num])# 这里使用70%的数据做训练30%的数据做测试ratio 0.7offset int(data.shape[0] * ratio)training_data data[:offset]# 计算train数据集的最大值最小值平均值maximums, minimums, avgs training_data.max(axis0), training_data.min(axis0), \training_data.sum(axis0) / training_data.shape[0]# 记录数据的归一化参数在预测时对数据做归一化global max_valuesglobal min_valuesglobal avg_valuesmax_values maximumsmin_values minimumsavg_values avgs# 对数据进行归一化处理for i in range(feature_num):data[:, i] (data[:, i] - avgs[i]) / (maximums[i] - minimums[i])# 训练集和测试集的划分比例training_data data[:offset]test_data data[offset:]return training_data, test_data# 验证数据集读取程序的正确性 training_data, test_data load_data() print(training_data.shape) print(training_data[1,:])class Regressor(paddle.nn.Layer):# self代表类的实例自身def __init__(self):# 初始化父类中的一些参数super(Regressor, self).__init__()# 定义一层全连接层输入维度是13输出维度是1self.fc Linear(in_features13, out_features1)# 网络的前向计算def forward(self, inputs):x self.fc(inputs)return x# 声明定义好的线性回归模型 model Regressor() # 开启模型训练模式 model.train() # 加载数据 training_data, test_data load_data() # 定义优化算法使用随机梯度下降SGD # 学习率设置为0.01 opt paddle.optimizer.SGD(learning_rate0.01, parametersmodel.parameters())EPOCH_NUM 10 # 设置外层循环次数 BATCH_SIZE 10 # 设置batch大小# 定义外层循环 for epoch_id in range(EPOCH_NUM):# 在每轮迭代开始之前将训练数据的顺序随机的打乱np.random.shuffle(training_data)# 将训练数据进行拆分每个batch包含10条数据mini_batches [training_data[k:k BATCH_SIZE] for k in range(0, len(training_data), BATCH_SIZE)]# 定义内层循环for iter_id, mini_batch in enumerate(mini_batches):x np.array(mini_batch[:, :-1]) # 获得当前批次训练数据y np.array(mini_batch[:, -1:]) # 获得当前批次训练标签真实房价# 将numpy数据转为飞桨动态图tensor的格式house_features paddle.to_tensor(x)prices paddle.to_tensor(y)# 前向计算predicts model(house_features)# 计算损失loss F.square_error_cost(predicts, labelprices)avg_loss paddle.mean(loss)if iter_id % 20 0:print(epoch: {}, iter: {}, loss is: {}.format(epoch_id, iter_id, avg_loss.numpy()))# 反向传播计算每层参数的梯度值avg_loss.backward()# 更新参数根据设置好的学习率迭代一步opt.step()# 清空梯度变量以备下一轮计算opt.clear_grad()# 保存模型参数文件名为LR_model.pdparams paddle.save(model.state_dict(), LR_model.pdparams) print(模型保存成功模型参数保存在LR_model.pdparams中)def load_one_example():# 从上边已加载的测试集中随机选择一条作为测试数据idx np.random.randint(0, test_data.shape[0])idx -10one_data, label test_data[idx, :-1], test_data[idx, -1]# 修改该条数据shape为[1,13]one_data one_data.reshape([1, -1])return one_data, label# 参数为保存模型参数的文件地址 model_dict paddle.load(LR_model.pdparams) model.load_dict(model_dict) model.eval()# 参数为数据集的文件地址 one_data, label load_one_example() # 将数据转为动态图的variable格式 one_data paddle.to_tensor(one_data) predict model(one_data)# 对结果做反归一化处理 predict predict * (max_values[-1] - min_values[-1]) avg_values[-1] # 对label数据做反归一化处理 label label * (max_values[-1] - min_values[-1]) avg_values[-1]print(预测房价结果:{}, 真实房价结果是: {}.format(predict.numpy(), label))四、代码解析 外层循环Epoch循环 pythonfor epoch_id in range(EPOCH_NUM):模型训练的外层循环会遍历指定次数EPOCH_NUM的数据集。 训练数据的打乱和拆分 pythonnp.random.shuffle(training_data) mini_batches [training_data[k:k BATCH_SIZE] for k in range(0, len(training_data), BATCH_SIZE)]在每个 epoch 开始之前随机打乱训练数据集。然后将数据集划分为小批次mini-batches每个批次包含 BATCH_SIZE 条数据。 内层循环Batch循环 pythonfor iter_id, mini_batch in enumerate(mini_batches):每个 epoch 内部的循环遍历每个小批次的数据。 数据处理 pythonx np.array(mini_batch[:, :-1]) # 获得当前批次训练数据 y np.array(mini_batch[:, -1:]) # 获得当前批次训练标签真实房价 house_features paddle.to_tensor(x) prices paddle.to_tensor(y)从当前小批次中分离出输入特征 x 和对应的标签 y然后将它们转换为飞桨动态图的张量格式。 前向计算和损失计算 pythonpredicts model(house_features) loss F.square_error_cost(predicts, labelprices) avg_loss paddle.mean(loss)通过模型进行前向计算然后计算预测值与真实标签的均方误差损失。 打印损失信息 pythonif iter_id % 20 0:print(epoch: {}, iter: {}, loss is: {}.format(epoch_id, iter_id, avg_loss.numpy()))每隔一定步数打印当前的损失值以便观察训练过程。 反向传播和参数更新 pythonavg_loss.backward() opt.step() opt.clear_grad()通过反向传播计算梯度然后使用优化器opt更新模型参数 模型保存 pythonpaddle.save(model.state_dict(), LR_model.pdparams)在训练结束后保存训练好的模型参数到文件中。 加载测试数据的函数 def load_one_example():# 从上边已加载的测试集中随机选择一条作为测试数据idx np.random.randint(0, test_data.shape[0])idx -10one_data, label test_data[idx, :-1], test_data[idx, -1]# 修改该条数据shape为[1,13]one_data one_data.reshape([1, -1])return one_data, label用于从测试集中随机选择一条数据作为测试样本并返回该样本的特征和标签。 # 参数为保存模型参数的文件地址 model_dict paddle.load(LR_model.pdparams) model.load_dict(model_dict) model.eval()# 参数为数据集的文件地址 one_data, label load_one_example() # 将数据转为动态图的variable格式 one_data paddle.to_tensor(one_data) predict model(one_data)# 对结果做反归一化处理 predict predict * (max_values[-1] - min_values[-1]) avg_values[-1] # 对label数据做反归一化处理 label label * (max_values[-1] - min_values[-1]) avg_values[-1]print(预测房价结果:{}, 真实房价结果是: {}.format(predict.numpy(), label)) model_dict paddle.load(‘LR_model.pdparams’): 从文件 ‘LR_model.pdparams’ 中加载保存的模型参数。 model.load_dict(model_dict): 将加载的模型参数字典加载到模型中。这个步骤将预训练好的参数应用到模型中。 model.eval(): 将模型设置为评估模式这通常用于测试或推断阶段。 one_data, label load_one_example(): 加载一个样本和其对应的标签。 one_data paddle.to_tensor(one_data): 将输入数据 one_data 转换为 PaddlePaddle 动态图的 Variable 格式。。 predict model(one_data): 使用加载的模型进行推断得到预测结果 predict。 predict predict * (max_values[-1] - min_values[-1]) avg_values[-1]: 对模型的预测结果进行反归一化处理。 label label * (max_values[-1] - min_values[-1]) avg_values[-1]: 对标签数据进行相同的反归一化处理以便比较预测结果和真实标签。 最后打印出预测结果和真实标签print(“预测房价结果:{}, 真实房价结果是: {}”.format(predict.numpy(), label))。这里使用 numpy() 方法将 PaddlePaddle 的 Tensor 转换为 NumPy 数组以便更方便地打印结果。 五、效果截图 保存模型参数文件名为LR_model.pdparams paddle.save(model.state_dict(), LR_model.pdparams) print(模型保存成功模型参数保存在LR_model.pdparams中)
http://www.zqtcl.cn/news/983406/

相关文章:

  • 郑州市城乡建设规划网站深圳十佳设计公司排名
  • 上海建设项目环保验收公示网站两新支部网站建设
  • 网站开发移动端网络系统软件应用与维护
  • 浙江网站建设营销网站后台管理系统一般用户名是什么
  • 网站 空间 租用wordpress搬家需要修改
  • 做网站推广怎么找客户网站换空间 seo
  • ipad网站开发seo哪家强
  • 昆明网站建设猫咪科技公司资料模板
  • 网站系统开发做网站需要填什么
  • 网站的数据库丢失建筑素材网
  • 个人网站做短视频pathon能做网站开发吗
  • 客户网站制作管理系统网站程序 wap pc 同步
  • 天津手动网站建设调试百度医院网站建设
  • ppt网站源码今天哈尔滨最新通告
  • asp网站乱码广州制作网页设计
  • 调用别人网站的数据库如何开网店卖自己的东西
  • 个人网站做影视网站开发学什么专业
  • 企业名称注册查询官网入口免费seo网站推广
  • 浙江门户网站建设公司个体工商户查询
  • 做网站的注意点赛事竞猜网站开发
  • 现在流行用什么语言做网站ppt设计教程网
  • 高端网站哪种好培训机构不退钱最怕什么举报
  • 青岛个人建站模板wordpress没有链接
  • 网上学习网站有哪些厦门城乡建设局网站
  • 怎样创建网站快捷方式个人制作一个网站的费用
  • 恒信在线做彩票的是什么样的网站软件开发流程管理
  • 网站服务器地址在哪里看艺术学校网站模板
  • 郑州中心站网站建设价格标准新闻
  • 电子商务网站管理互联网营销师主要做什么
  • 门户网站指的是什么凯里网络公司建设网站