Tensorflow新手通过PlayGround可视化初识神经网络

是不是觉得神经网络不够形象,概念不够清晰,如果你是新手,来玩玩PlayGround就知道,大神请绕道。

PlayGround是一个在线演示、实验的神经网络平台,是一个入门神经网络非常直观的网站。这个图形化平台非常强大,将神经网络的训练过程直接可视化。同时也能让我们对Tensorflow有一个感性的认识。

PlayGround的网址是:http://playground.tensorflow.org/

PlayGround页面如图所示,主要分为DATA(数据),FEATURES(特征),HIDDEN LAYERS(隐含层),OUTPUT(输出层)。

PlayGround主页面

DATA一栏里提供了4种不同形态的数据,分别是圆形、异或、高斯和螺旋。平面内的数据分为蓝色和黄色两类。

四种数据形态

我们的目标就是通过神经网络将这两种数据分类,可以看出螺旋形态的数据分类是难度最高的。除此之外,PlayGround还提供了非常灵活的数据配置,可以调节噪声、训练数据和测试数据的比例和Batch size的大小。

噪声的影响

训练数据和测试数据的比例

Batch size大小

Batch size就是每批进入神经网络数据点的个数。

FEATURES一栏包含了可供选择的7种特征:X1、X2、X1X1、X2X2、X1X2、sin(X1)、sin(X2)。

7种特征

X1可以看成以横坐标分布的数据特征,X2是以纵坐标分布的数据特征,X1X1和X2X2是非负的抛物线分布,X1X2是双曲抛物面分布,sin(X1)和sin(X2)正弦分布。我们的目标就是通过这些特征的分布组合将两类数据(蓝色和黄色)区分开,这就是训练的目的。

HIDDEN LAYERS一栏可设置多少隐含层。一般来讲,隐含层越多,衍生出的特征类型也就越丰富,对于分类的效果也会越好,但不是越多越好,层数多了训练的速度会变慢,同时收敛的效果不一定会更好,后面也会提到。

隐含层结构

因为在这里是一个分类的问题,隐含层设置为两层,刚好对应输出的类型。层与层之间的连线粗细表示权重的绝对值大小,我们可以把鼠标放在线上查看权值,也可以点击修改。

OUTPUT一栏将输出的训练过程直接可视化,通过test loss和training loss来评估模型的好坏。

输出模型

除了主要的四个部分外,在界面上还有一列控制神经网络的参数,从左到右分别是,训练的开关、迭代次数、学习速率、激活函数、正则化、正则化率和问题的类型。

神经网络控制参数

我们接下来尝试了几个例子,考虑到图片太多,直接讲一些结论,读者可以自行去摸索。

首先考虑的是激活函数的影响,比较了一下Sigmoid函数和ReLU函数:

1、选择Sigmoid函数作为激活函数,明显能感觉到训练的时间很长,ReLU函数能大大加快收敛速度,这也是现在大多数神经网络都采用的激活函数。

2、当把隐含层数加深后,会发现Sigmoid函数作为激活函数,训练过程loss降不下来,这是因为Sigmoid函数反向传播时出现梯度消失的问题(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况会造成信息丢失)。

接着我们选用ReLU函数作为激活函数,比较一下隐含层数量对结果的影响:

1、我们选用了3层隐含层,每层特征个数为8,8,2的模型和6层隐含层,每层特征个数为8,8,8,8,8,2的模型。3层隐含层模型大概200步就达到了test loss为0.005,training loss为0.005,而6层隐含层模型跑了700步,test loss为0.015,training loss为0.005,有点过拟合。

8,8,2模型

8,8,8,8,8,2模型

隐含层的数量不是越多越好,层数和特征的个数太多,会造成优化的难度和出现过拟合的现象。

如果你感兴趣,很多测试你都可以尝试一下。通过神经网络,我们的系统自己就能学习到哪些特征是有效的,哪些特征是无效的,通过自己学习这些特征,然后判断问题。值得一提的是,最近很热的AlphaGo zero通过自我学习的过程,从无到有,打败了参照人类知识学习的AlphaGo,可见机器自我学习,自我进化的速度太快了,远远超越了人类历史经验的总结。人生苦短,快用Tensorflow!

原文链接:https://www.jianshu.com/p/5f83defc7615

0、PlayGround可视化的更多相关文章

  1. PLAYGROUND 可视化

    PLAYGROUND 可视化 由 王巍 (@ONEVCAT) 发布于 2015/09/23 在程序界,很多小伙伴都会对研究排序算法情有独钟,并且试图将排序执行的过程可视化,以便让大家更清晰直观地了解算 ...

  2. 下载和安装mongodb4.2.0+robmongo可视化工具

    一.mongodb下载安装 1.mongodb下载地址:https://www.mongodb.com/download-center/community?jmp=nav 下了很久很久,可以找其他途径 ...

  3. eclipseMARS2.0使用可视化设计界面——配置window builder

    1.查看eclipse版本 不同版本的eclipse对应不同的版本window builder,如果不知道版本的话可以通过,点击HELP——>about eclipse来查看自己eclipse的 ...

  4. .Net Core 3.0开源可视化设计CMS内容管理系统建站系统

    简介 ZKEACMS,又名纸壳CMS,是可视化编辑设计的内容管理系统.基于.Net Core开发可跨平台运行,并拥有卓越的性能. 纸壳CMS基于插件式设计,功能丰富,易于扩展,可快速创建网站. 布局设 ...

  5. Windows phone 8.0 本地化遇到的两个问题

    基本上来说,按照msdn来讲的,本地化和全球化没有太多的问题,链接如下: http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/ff ...

  6. 使用Visual Studio 2013编写可维护的本地可视化(natvis)

    在Visual Studio 2012中,我们介绍了创建可视化使用原生类型的能力natvis文件. Visual Studio 2013中包含了一些改进,使其更容易编写可视化的类,在内部利用收集来存储 ...

  7. Swift开发学习(两):Playground

    Swift开发学习:Playground 大约 对于软件用户.游戏玩家,我一直提倡用户体验.也是用户,是各种开发工具的使用者.也会喜欢用户体验做得好的工具软件.这次苹果想开发人员所想,提供了一个能够玩 ...

  8. Tensorboard教程:Tensorflow命名空间与计算图可视化

    Tensorflow命名空间与计算图可视化 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 强烈推荐Tensorflow实战Google深度学习框架 实验平台: Tensorflow ...

  9. Swift开发学习(二):Playground

    http://blog.csdn.net/powerlly/article/details/29674253 Swift开发学习:Playground 关于 对于软件用户.游戏玩家,大家一直都在提倡用 ...

随机推荐

  1. fastdfs 清晰简介 有用

    是什么?         FastDFS是一个轻量级分布式文件系统. 能干嘛?         对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等. 在Linux上的安装连 ...

  2. [C++] struct memory allocation

    MAX-byte alignment (最大单位对齐) typedef struct user USER; typedef struct employee E; struct user{ ]; //t ...

  3. Oracle VirtualBox 问题汇总

    1.打开虚拟机时报硬盘UUID 已经存在:错误信息: Cannot register the hard disk 'F:\VirtualBox VMs\cl-11r2-rac2\cl-11r2-rac ...

  4. HDU 6097 Mindis (计算几何)

    题意:给一个圆C和圆心O,P.Q是圆上或圆内到圆心距离相等的两个点,在圆上取一点D,求|PD| + |QD|的最小值 析:首先这个题是可以用三分过的,不过也太,.... 官方题解: 很不幸不总是中垂线 ...

  5. 从零开始学习前端JAVASCRIPT — 11、JavaScript运动模型及轮播图效果、放大镜效果、自适应瀑布流

    未完待续...... 一.运动原理 通过连续不断的改变物体的位置,而发生移动变化. 使用setInterval实现. 匀速运动:速度值一直保持不变. 多物体同时运动:将定时器绑设置为对象的一个属性. ...

  6. C#延迟执行

    借鉴于该篇博客:http://kb.cnblogs.com/page/42581/ 先看两个方法 public class YieldClasses { public static IEnumerab ...

  7. MySQL查询表内重复记录并删除

    在日常业务场景中,经常会出现一个问题就是解决数据重复的问题,这里用到了一张用户表(s_user)做重复数据操作,分别包含了两个字段,id.name分别用于做唯一标示以及相同姓名的检索. 表结构以及测试 ...

  8. AC620教程 第十五节 8位7段数码管驱动设计与验证

    本章导读 电子系统中常用的显示设备有数码管.LCD液晶以及VGA显示器等.其中数码管又可分为段式显示(7段.米字型等)以及点阵显示(8*8.16*16等),LCD液晶的应用可以分为字符式液晶(1602 ...

  9. 基于 Web 的数据挖掘--自动抽取用 HTML、XML 和 Java 编写的信息

    简介: 不可否认,万维网是到目前为止世界上最丰富和最密集的信息来源.但是,它的结构使它很难用系统的方法来利用信息.本文描述的方法和工具将使那些熟悉 Web 最常用技术的开发人员能快速而便捷地获取他们所 ...

  10. 前端技术俗语js

    注:原文是英文,本文是我翻译的.有人把我翻译的内容原文照抄,放到他自己的专栏,搞得有人问我是不是我抄袭了……请支持我的劳动成果,花了两个小时翻译的,谢谢.转载请注明译者为方应杭. 嘿,我最近接到一个 ...