TensorFlow多层感知机实现函数逼近的从零到一教程

本节将展示如何使用多层感知机(MLP)进行函数逼近,具体来说,是预测波士顿的房价。第2章使用回归技术对房价进行预测,现在使用 MLP 完成相同的任务。


准备工作


对于函数逼近,这里的损失函数是 MSE。输入应该归一化,隐藏层是 ReLU,输出层最好是 Sigmoid。


下面是如何使用 MLP 进行函数逼近的示例:

  1. 导入需要用到的模块:sklearn,该模块可以用来获取数据集,预处理数据,并将其分成训练集和测试集;pandas,可以用来分析数据集;matplotlib 和 seaborn 可以用来可视化:

TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_神经网络

加载数据集并创建 Pandas 数据帧来分析数据:

TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_数据集_02

了解一些关于数据的细节:

TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_数据集_03

下表很好地描述了数据:

TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_神经网络_04


找到输入的不同特征与输出之间的关联:

TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_数据_05
以下是上述代码的输出:

TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_tensorflow_06


从前面的代码中,可以看到三个参数 RM、PTRATIO 和 LSTAT 在幅度上与输出之间具有大于 0.5 的相关性。选择它们进行训练。将数据集分解为训练数据集和测试数据集。使用 MinMaxScaler 来规范数据集。
需要注意的一个重要变化是,由于神经网络使用 Sigmoid 激活函数(Sigmoid 的输出只能在 0~1 之间),所以还必须对目标值 Y 进行归一化:

TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_tensorflow_07

定义常量和超参数:

TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_归一化_08

创建一个单隐藏层的多层感知机模型:

TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_数据_09

声明训练数据的占位符并定义损失和优化器:

TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_数据集_10

执行计算图:

TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_tensorflow_11



解读分析

在只有一个隐藏层的情况下,该模型在训练数据集上预测房价的平均误差为 0.0071。下图显示了房屋估价与实际价格的关系:


TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_数据集_12


在这里,使用 ​ ​TensorFlow​​ 操作层(Contrib)来构建神经网络层。这使得工作稍微容易一些,因为避免了分别为每层声明权重和偏置。如果使用像 Keras 这样的 API,工作可以进一步简化。


下面是 Keras 中以 TensorFlow 作为后端的代码:


TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_数据_13


前面的代码给出了预测值和实际值之间的结果。可以看到,通过去除异常值(一些房屋价格与其他参数无关,比如最右边的点),可以改善结果:


TensorFlow从0到1之TensorFlow多层感知机函数逼近过程(18)_数据集_14


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空