https://cloud.tencent.com/developer/news/190352

http://playground.tensorflow.org

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

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!

來源:简书作者:MrLonelyZC88

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

推荐!PlayGround:可视化神经网络的更多相关文章

  1. 0、PlayGround可视化

    Tensorflow新手通过PlayGround可视化初识神经网络 是不是觉得神经网络不够形象,概念不够清晰,如果你是新手,来玩玩PlayGround就知道,大神请绕道. PlayGround是一个在 ...

  2. 推荐一个可视化的学习Git的好网站:LearnGitBranching

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:推荐一个可视化的学习Git的好网站:LearnGitBranching.

  3. PLAYGROUND 可视化

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

  4. 基于hadoop的电影推荐结果可视化

    数据可视化 1.数据的分析与统计 使用sql语句进行查询,获取所有数据的概述,包括电影数.电影类别数.人数.职业种类.点评数等. 2.构建数据可视化框架 这里使用了前端框架Bootstrap进行前端的 ...

  5. 学习推荐《Python神经网络编程》中文版PDF+英文版PDF+源代码

    推荐非常适合入门神经网络编程的一本书<Python神经网络编程>,主要是三部分: 介绍神经网络的基本原理和知识:用Python写一个神经网络训练识别手写数字:对识别手写数字的程序的一些优化 ...

  6. (006)增加Blazor WebAssembly子站,推荐一个可视化linux ssh客户端FinalShell

    增加一个Blazor WebAssembly子站,并添加来回链接. 同时推荐一个好用的ssh客户端:FinalShell,windows用户再也不怕linux黑窗口不会用了:) * 支持直接命令行; ...

  7. BERT大火却不懂Transformer?读这一篇就够了 原版 可视化机器学习 可视化神经网络 可视化深度学习

    https://jalammar.github.io/illustrated-transformer/ The Illustrated Transformer Discussions: Hacker ...

  8. 『cs231n』卷积神经网络的可视化与进一步理解

    cs231n的第18课理解起来很吃力,听后又查了一些资料才算是勉强弄懂,所以这里贴一篇博文(根据自己理解有所修改)和原论文的翻译加深加深理解,其中原论文翻译比博文更容易理解,但是太长,而博文是业者而非 ...

  9. Tensorflow 搭建神经网络及tensorboard可视化

    1. session对话控制 matrix1 = tf.constant([[3,3]]) matrix2 = tf.constant([[2],[2]]) product = tf.matmul(m ...

随机推荐

  1. JDBC的理解

    import java.sql.*;//倒入java.sql包 public class JDBC { //封装没有返回值的jdbc函数(Update) --适用于增 删 改 public stati ...

  2. css学习_css3伸缩布局 flex布局

    1.flex布局 案例一: 案例二:   保证不至于缩放得太小或太大 案例三:flex的值不一定要写成几份,可以写成固定值 案例四: 竖着3等分(父容器按照高度3等分) !!案例  -----用fle ...

  3. [Day20]Map接口、可变参数、Collections

    1.Map接口-元素成对存在,每个元素由健与值两部分组成,通过键可以找所对应的值 1.1 Map子类 (1)HashMap<K,V>:存储数据所用的哈希表结构,元素的存取数据顺序不能保证一 ...

  4. 对于Dubbo的理解

    最近才开始看关于Dubbo,曾经居然把Dubbo跟ActiveMQ联系到了一起,很显然 ,是没有深入理解Dubbo的本质. 其实Dubbo是项目与项目(或者是系统与系统)之间通信用的.在Dubbo没出 ...

  5. 什么是span?跨径

    研究zipkin时候,发现有个span的概念 https://segmentfault.com/a/1190000012342007

  6. mac OSx 安装 mysqlclient

    首先需要安装  按照提示操作 brew install mysql-connector-c 然后 修改mysql_config 执行mysql_config可以看到文件所在位置 我的目录放在 /usr ...

  7. 好用的一些 git 命令

    git stash  将已修改未提交的 改动保存起来   恢复用git stash pop gir revert  反转commit git rebase 更换基础分支 git grep  -n 显示 ...

  8. windows slaver 脚本执行xcopy 报错无效驱动器规格

    jenkins上配置的windows slaver机器如下: 我用这台windows 机器作为slaver机器来编译pc的exe包,但是在最后归档包倒ftp上时报错,如下: 但是我直接在windows ...

  9. 做一个有产品思维的研发:Scrapy安装

    每天10分钟,解决一个研发问题. 如果你想了解我在做什么,请看<做一个有产品思维的研发:课程大纲>传送门:https://www.cnblogs.com/hunttown/p/104909 ...

  10. ionic3 小记录

    cordova platform add ios@latest 安装最新ios ionic cordova build ios -- --buildFlag="-UseModernBuild ...