在 TensorFlow 实现简单线性回归的基础上,可通过在权重和占位符的声明中稍作修改来对相同的数据进行多元线性回归。

在多元线性回归的情况下,由于每个特征具有不同的值范围,归一化变得至关重要。这里是波士顿房价数据集的多重线性回归的代码,使用 13 个输入特征。

波士顿房价数据集可从http://lib.stat.cmu.edu/datasets/boston处获取。

多元线性回归的具体实现

  1. 导入需要的所有软件包:


     
  2. 因为各特征的数据范围不同,需要归一化特征数据。为此定义一个归一化函数。另外,这里添加一个额外的固定输入值将权重和偏置结合起来。为此定义函数 append_bias_reshape()。该技巧有时可有效简化编程:

     
  3. 现在使用 TensorFlow contrib 数据集加载波士顿房价数据集,并将其划分为 X_train 和 Y_train。注意到 X_train 包含所需要的特征。可以选择在这里对数据进行归一化处理,也可以添加偏置并对网络数据重构:

     
  4. 为训练数据声明 TensorFlow 占位符。观测占位符 X 的形状变化:

     
  5. 为权重和偏置创建 TensorFlow 变量。通过随机数初始化权重:

     
  6. 定义要用于预测的线性回归模型。现在需要矩阵乘法来完成这个任务:

     
  7. 为了更好地求微分,定义损失函数:

     
  8. 选择正确的优化器:

     
  9. 定义初始化操作符:

     
  10. 开始计算图:

     
  11. 绘制损失函数:

     

在这里,我们发现损失随着训练过程的进行而减少:


 

本节使用了 13 个特征来训练模型。简单线性回归和多元线性回归的主要不同在于权重,且系数的数量始终等于输入特征的数量。下图为所构建的多元线性回归模型的 TensorBoard 图:

现在可以使用从模型中学到的系数来预测房价:

TensorFlow从0到1之TensorFlow实现多元线性回归(16)的更多相关文章

  1. TensorFlow从0到1之TensorFlow优化器(13)

    高中数学学过,函数在一阶导数为零的地方达到其最大值和最小值.梯度下降算法基于相同的原理,即调整系数(权重和偏置)使损失函数的梯度下降. 在回归中,使用梯度下降来优化损失函数并获得系数.本节将介绍如何使 ...

  2. TensorFlow从0到1之TensorFlow损失函数(12)

    正如前面所讨论的,在回归中定义了损失函数或目标函数,其目的是找到使损失最小化的系数.本节将介绍如何在 TensorFlow 中定义损失函数,并根据问题选择合适的损失函数. 声明一个损失函数需要将系数定 ...

  3. TensorFlow从0到1之TensorFlow Keras及其用法(25)

    Keras 是与 TensorFlow 一起使用的更高级别的作为后端的 API.添加层就像添加一行代码一样简单.在模型架构之后,使用一行代码,你可以编译和拟合模型.之后,它可以用于预测.变量声明.占位 ...

  4. TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(23)

    Hornik 等人的工作(http://www.cs.cmu.edu/~bhiksha/courses/deeplearning/Fall.2016/notes/Sonia_Hornik.pdf)证明 ...

  5. TensorFlow从0到1之TensorFlow实现反向传播算法(21)

    反向传播(BPN)算法是神经网络中研究最多.使用最多的算法之一,它用于将输出层中的误差传播到隐藏层的神经元,然后用于更新权重. 学习 BPN 算法可以分成以下两个过程: 正向传播:输入被馈送到网络,信 ...

  6. TensorFlow从0到1之TensorFlow常用激活函数(19)

    每个神经元都必须有激活函数.它们为神经元提供了模拟复杂非线性数据集所必需的非线性特性.该函数取所有输入的加权和,进而生成一个输出信号.你可以把它看作输入和输出之间的转换.使用适当的激活函数,可以将输出 ...

  7. TensorFlow从0到1之TensorFlow逻辑回归处理MNIST数据集(17)

    本节基于回归学习对 MNIST 数据集进行处理,但将添加一些 TensorBoard 总结以便更好地理解 MNIST 数据集. MNIST由https://www.tensorflow.org/get ...

  8. TensorFlow从0到1之TensorFlow csv文件读取数据(14)

    大多数人了解 Pandas 及其在处理大数据文件方面的实用性.TensorFlow 提供了读取这种文件的方法. 前面章节中,介绍了如何在 TensorFlow 中读取文件,本节将重点介绍如何从 CSV ...

  9. TensorFlow从0到1之TensorFlow超参数及其调整(24)

    正如你目前所看到的,神经网络的性能非常依赖超参数.因此,了解这些参数如何影响网络变得至关重要. 常见的超参数是学习率.正则化器.正则化系数.隐藏层的维数.初始权重值,甚至选择什么样的优化器优化权重和偏 ...

随机推荐

  1. 【python爬虫】scrapy实战1--百万微博任性采集

    原文: https://blog.csdn.net/qq_36936730/article/details/105132550

  2. Centos 安装 docker 和 docker-compose

    一.docker安装 1.卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ d ...

  3. PHP非常用函数汇总

    1) ARRAY_FILTER — 用回调函数过滤数组中的单元 function  odd ( $var ) {      // returns whether the input integer i ...

  4. css3,transition,animation两种动画实现区别

    我们为页面设置动画时,往往会用到transition还有animation以及transfrom属性或者用到js. 其实通常情况下,对于使用js我们更加倾向于使用css来设置动画. transfrom ...

  5. Xilinx的DocNav文件导航中的文档开头字母缩写都是什么意思?

    在安装Xilinx的开发软件后都会附带安装一个用于查阅Xilinx技术文档的文件导航工具DocNav. 在DocNav中可以找到几乎所有对我们开发Xilinx FPGA有用的技术文档,其中的文档数量更 ...

  6. 循序渐进VUE+Element 前端应用开发(3)--- 动态菜单和路由的关联处理

    在我开发的很多系统里面,包括Winform混合框架.Bootstrap开发框架等系列产品中,我都倾向于动态配置菜单,并管理对应角色的菜单权限和页面权限,实现系统对用户权限的控制,菜单一般包括有名称.图 ...

  7. LDA模型笔记

    “LDA(Latent Dirichlet Allocation)模型,模型主要解决文档处理领域的问题,比如文章主题分类.文章检测.相似度分析.文本分段和文档检索等问题.LDA主题模型是一个三层贝叶斯 ...

  8. 关于安装Linux-centOS时遇到的问题

    1.新建虚拟机实例后倒入centos镜像开机报错.提示不支持 64 位.... 重新下载虚拟机安装包,重新安装. 2.安装到检查光盘镜像的下一步,vm is nor support (or ... c ...

  9. node_modules内容太大导致webstrom非常卡

    选中一个文件夹,例如node_modules,点击右键->mark directory as ->excluded,这样就可以把这个文件标记并排除出来,使webstorm不会扫描这个文件下 ...

  10. Remote desktop cannot verify?教你如何应对

    远程桌面:IIS7远程桌面IIS7远程桌面管理工具(3389.vps.服务器批量管理.批量远程工具)简介: 1.批量管理WIN系列服务器,VPS,电脑.   2.批量导入服务器的IP,端口,账号和密码 ...