TensorFlow实现多层感知机函数逼近

准备工作

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



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

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

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

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

下表很好地描述了数据:

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

以下是上述代码的输出:

  1. 从前面的代码中,可以看到三个参数
    RM、PTRATIO 和 LSTAT 在幅度上与输出之间具有大于 0.5 的相关性。选择它们进行训练。将数据集分解为训练数据集和测试数据集。使用
    MinMaxScaler 来规范数据集。

    需要注意的一个重要变化是,由于神经网络使用 Sigmoid 激活函数(Sigmoid 的输出只能在 0~1 之间),所以还必须对目标值 Y 进行归一化:

  1. 定义常量和超参数:

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

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

  1. 执行计算图:

解读分析

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

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



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



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

TensorFlow实现多层感知机函数逼近的更多相关文章

  1. TensorFlow多层感知机函数逼近过程详解

    http://c.biancheng.net/view/1924.html Hornik 等人的工作(http://www.cs.cmu.edu/~bhiksha/courses/deeplearni ...

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

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

  3. TensorFlow实现多层感知机MINIST分类

    TensorFlow实现多层感知机MINIST分类 TensorFlow 支持自动求导,可以使用 TensorFlow 优化器来计算和使用梯度.使用梯度自动更新用变量定义的张量.本文将使用 Tenso ...

  4. TensorFlow学习笔记7-深度前馈网络(多层感知机)

    深度前馈网络(前馈神经网络,多层感知机) 神经网络基本概念 前馈神经网络在模型输出和模型本身之间没有反馈连接;前馈神经网络包含反馈连接时,称为循环神经网络. 前馈神经网络用有向无环图表示. 设三个函数 ...

  5. TensorFlow实现自编码器及多层感知机

    1 自动编码机简介        传统机器学习任务在很大程度上依赖于好的特征工程,比如对数值型,日期时间型,种类型等特征的提取.特征工程往往是非常耗时耗力的,在图像,语音和视频中提取到有效的特征就更难 ...

  6. Tensorflow 2.0 深度学习实战 —— 详细介绍损失函数、优化器、激活函数、多层感知机的实现原理

    前言 AI 人工智能包含了机器学习与深度学习,在前几篇文章曾经介绍过机器学习的基础知识,包括了监督学习和无监督学习,有兴趣的朋友可以阅读< Python 机器学习实战 >.而深度学习开始只 ...

  7. 『TensorFlow』读书笔记_多层感知机

    多层感知机 输入->线性变换->Relu激活->线性变换->Softmax分类 多层感知机将mnist的结果提升到了98%左右的水平 知识点 过拟合:采用dropout解决,本 ...

  8. Theano3.4-练习之多层感知机

    来自http://deeplearning.net/tutorial/mlp.html#mlp Multilayer Perceptron note:这部分假设读者已经通读之前的一个练习 Classi ...

  9. 学习笔记TF026:多层感知机

    隐含层,指除输入.输出层外,的中间层.输入.输出层对外可见.隐含层对外不可见.理论上,只要隐含层节点足够多,只有一个隐含层,神经网络可以拟合任意函数.隐含层越多,越容易拟合复杂函数.拟合复杂函数,所需 ...

随机推荐

  1. mac系统 PHP Nginx环境变量修改

    场景:php默认的环境变量不是我们实际工作中想要的 执行命令:which php 查看默认的php指向的目录 :  /usr/bin/php 修改· ~/.bash_profile 文件 添加php环 ...

  2. Thinkphp5之ajax分页实现_paginate()参数详细

    Thinkphp5 做数据搜索需要带关键词分页,如何将查询条件带入到分页中,本文详细介绍Thinkphp5 分页带参数 一.基本使用方法: $list = Db::name('user')->w ...

  3. AWVS扫描器的用法

    目录 AWVS AWVS功能介绍 AWVS如何工作 审核漏洞 AWVS11页面介绍 AWVS11中建立扫描 AWVS10.5中的介绍 AWVS11版本启动失败 利用Burpsuite修改AWVS的数据 ...

  4. 源码分析SpringCloud Gateway如何加载断言(predicates)与过滤器(filters)

    我们今天的主角是Gateway网关,一听名字就知道它基本的任务就是去分发路由.根据不同的指定名称去请求各个服务,下面是Gateway官方的解释: https://spring.io/projects/ ...

  5. [源码解析] 并行分布式任务队列 Celery 之 负载均衡

    [源码解析] 并行分布式任务队列 Celery 之 负载均衡 目录 [源码解析] 并行分布式任务队列 Celery 之 负载均衡 0x00 摘要 0x01 负载均衡 1.1 哪几个 queue 1.1 ...

  6. beta设计和计划

    项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求 Beta设计和计划 我们在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作业在哪个具体方面帮助我们实现目标 ...

  7. 如何借助CRM销售管理系统提升业绩?

    与传统企业销售模式不同,现代企业在网络背书下,销售活动与网络密切相关.销售数据需要网络保存,销售渠道需要网络挖掘.在线的销售软件让销售活动起到了事半功倍的效果.CRM销售管理系统是企业必不可少的在线软 ...

  8. 利用Typora+PicGo+OSS+Git+Github/码云搭建个人云笔记

    搭建个人云笔记 对于程序员来讲,使用markdown可以帮助我们快速地写作,书写出排版好看,颜值高的笔记,使用markdown来书写文档相比于使用word要简单快捷的多 市面上有很多markdown的 ...

  9. [bug] SSM项目:Cannot load driver class: com.mysql.jdbc.Driver

    检查pom文件,mysql包部分为: <dependency> <groupId>mysql</groupId> <artifactId>mysql-c ...

  10. MySQL报错ERROR 1436 (HY000): Thread stack overrun:

    今天搭私服的时候,卡在角色创建画面,日志报错如上. 这是MySQL报错ERROR 1436 (HY000): Thread stack overrun:   修改方法 vim /etc/my.cnf ...