https://cloud.tencent.com/developer/news/190352网络
http://playground.tensorflow.org函数
PlayGround是一个在线演示、实验的神经网络平台,是一个入门神经网络很是直观的网站。这个图形化平台很是强大,将神经网络的训练过程直接可视化。同时也能让咱们对Tensorflow有一个感性的认识。学习
PlayGround页面如图所示,主要分为DATA(数据),FEATURES(特征),HIDDEN LAYERS(隐含层),OUTPUT(输出层)。测试
PlayGround主页面优化
DATA一栏里提供了4种不一样形态的数据,分别是圆形、异或、高斯和螺旋。平面内的数据分为蓝色和黄色两类。网站
四种数据形态3d
咱们的目标就是经过神经网络将这两种数据分类,能够看出螺旋形态的数据分类是难度最高的。除此以外,PlayGround还提供了很是灵活的数据配置,能够调节噪声、训练数据和测试数据的比例和Batch size的大小。blog
噪声的影响图片
训练数据和测试数据的比例入门
Batch size大小
Batch size就是每批进入神经网络数据点的个数。
FEATURES一栏包含了可供选择的7种特征:X一、X二、X1X一、X2X二、X1X二、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