有趣的Tensorflow游乐场以及有趣的思考

简介: 闲来无事不小心发现一个好玩有适合神经网络初学者的工具。google的神经网络Tensorflow游戏场,通过拖拽就可以选择特征,配置权重,配置隐藏层等,下图是通过左侧点集的点位置(x1,x2),算出点集的蓝色和橙色区域:地址有意思的反思:我从大二起就在公司实现一直到研究生、工作,先后接触了电子设计,.

闲来无事不小心发现一个好玩有适合神经网络初学者的工具。google的神经网络Tensorflow游戏场,通过拖拽就可以选择特征,配置权重,配置隐藏层等,下图是通过左侧点集的点位置(x1,x2),算出点集的蓝色和橙色区域:
image
地址
有意思的反思:我从大二起就在公司实习一直到研究生、工作,先后接触了电子设计,嵌入式软件设计,嵌入式系统开发,linux系统开发和驱动开发,java后端设计,C#客户端开发,app及前端开发,数据仓库,大数据调研及数据分析,机器学习以及计算视觉等工作,可谓是一路追赶时代口号的发展,每一次技术的转行吧,都会有深深的迷茫,回过头来不禁发现,其实无论技术的怎样变迁,都是为了解决现有的商业问题,所有看似前端的技术,无论是20年前的嵌入式还是现在的人工智能,大数据什么的,都是解决问题的一个工具而已。不同于当时读博的是,商业上是定义问题然后解决问题,进而实现价值,卖出去,收钱;读博士找到一个感兴趣的问题,然后解决的,发论文毕业。



TensorFlow游乐场的左侧提供了4个不同的数据集来测试神经网络。默认的数据为左上角被框出来的那个。被选中的数据也会显示在上图中最右边的“OUTPUT”栏下。在这个数据中,可以看到一个二维平面上有黑色或者灰色的点,每一个小点代表了一个样例,而点的颜色代表了样例的标签。因为点的颜色只有两种,所以这是一个二分类的问题。在这里举一个例子来说明这个数据可以代表的实际问题。假设需要判断某工厂生产的零件是否合格,那么灰色的点可以表示所有合格的零件而黑色的表示不合格的零件。这样判断一个零件是否合格就变成了区分点的颜色。
  为了将一个实际问题对应到平面上不同颜色点的划分,还需要将实际问题中的实体,比如上述例子中的零件,变成平面上的一个点①。这就是特征提取解决的问题。还是以零件为例,可以用零件的长度和质量来大致描述一个零件。这样一个物理意义上的零件就可以被转化成长度和质量这两个数字。在机器学习中,所有用于描述实体的数字的组合就是一个实体的特征向量(feature vector)。特征向量的提取对机器学习的效果至关重要。通过特征提取,就可以将实际问题中的实体转化为空间中的点。假设使用长度和质量作为一个零件的特征向量,那么每个零件就是二维平面上的一个点。TensorFlow游乐场中FEATURES一栏对应了特征向量。在本例中,可以认为x1代表一个零件的长度,而x2代表零件的质量。
  特征向量是神经网络的输入,神经网络的主体结构显示在了上图的中间位置。目前主流的神经网络都是分层的结构,第一层是输入层,代表特征向量中每一个特征的取值。比如如果一个零件的长度是0.5,那么x1的值就是0.5。同一层的节点不会相互连接,而且每一层只和下一层连接,直到最后一层作为输出层得到计算的结果②。在二分类问题中,比如判断零件是否合格,神经网络的输出层往往只包含一个节点,而这个节点会输出一个实数值。通过这个输出值和一个事先设定的阈值,就可以得到最后的分类结果。以判断零件合格为例,可以认为当输出的数值大于0时,给出的判断结果是零件合格,反之则零件不合格。一般可以认为当输出值离阈值越远时得到的答案越可靠。
  在输入和输出层之间的神经网络叫做隐藏层,一般一个神经网络的隐藏层越多,这个神经网络越“深”。而所谓深度学习中的这个“深度”和神经网络的层数也是密切相关的。在TensorFlow游乐场中可以通过点击“+”或者“-”来增加/减少神经网络隐藏层的数量。除了可以选择神经网络的深度,TensorFlow游乐场也支持选择神经网络每一层的节点数以及学习率(learning rate)、激活函数(activation)、正则化(regularization)。如何使用这些参数将在后面的章节中讨论。在本文中都直接使用TensorFlow游乐场默认的设置。当所有配置都选好之后,可以通过左上角的开始标志“”来训练这个神经网络。
那么如何解读TensorFlow游乐场的训练结果。在上图中,一个小格子代表神经网络中的一个节点,而边代表节点之间的连接。每一个节点和边都被涂上了或深或浅的颜色,但边上的颜色和格子中的颜色含义有略微的区别。每一条边代表了神经网络中的一个参数,它可以是任意实数。神经网络就是通过对参数的合理设置来解决分类或者回归问题的。边上的颜色体现了这个参数的取值,当边的颜色越深时,这个参数取值的绝对值越大;当边的颜色接近白色时,这个参数的取值接近于0。
  每一个节点上的颜色代表了这个节点的区分平面。具体来说,如果把这个平面当成一个卡迪尔坐标系,这个平面上的每一个点就代表了(x1,x2)的一种取值。而这个点的颜色就体现了x1,x2在这种取值下这个节点的输出值。和边类似,当节点的输出值的绝对值越大时,颜色越深。下面将具体解读输入层x1所代表的节点。从上图中可以看到x1这个节点的区分平面就是y轴。因为这个节点的输出就是x1本身的值,所以当x1小于0时,这个节点的输出就是负数,而x1大于0时输出的就是正数。于是y轴的左侧都为灰色,而右侧都为黑色。上图中其他节点可以类似的解读。唯一特殊的是最右边OUTPUT栏下的输出节点。这个节点中除了显示了区分平面之外,还显示了训练数据,也就是希望通过神经网络区分的数据点。从上图中可以看到,经过两层的隐藏层,输出节点的区分平面已经可以完全区分不同颜色的数据点。
  综上所述,使用神经网络解决分类问题主要可以分为以下4个步骤。
  1.提取问题中实体的特征向量作为神经网络的输入。不同的实体可以提取不同的特征向量,本书中将不具体介绍。本文假设作为神经网络输入的特征向量可以直接从数据集中获取。
  2.定义神经网络的结构,并定义如何从神经网络的输入得到输出。这个过程就是神经网络的前向传播算法,以后将进行详细介绍。
  3.通过训练数据来调整神经网络中参数的取值,这就是训练神经网络的过程。下一节将先介绍TensorFlow中表示神经网络参数的方法,然后下一节将大致介绍神经网络优化算法的框架,并介绍如何通过TensorFlow实现这个框架。
  4.使用训练好的神经网络来预测未知的数据。这个过程和步骤2中的前向传播算法一致,本文不再赘述。

要点归纳;
- 在真实问题中,一般会从实体中抽取更多的特征,所以一个实体会被表示为高维空间中的点。
- 有一些神经网络是可以跨层连接的,但目前大部分神经网络结构中都只是相邻两层有连接。
- 在TensorFlow游乐场网站上,边的颜色有黄色(文中浅色部分)和蓝色(文中深色部分)的区别,黄色越深表示负得越大,蓝色越深表示正得越大。
- 类似边上的颜色,TensorFlow游乐场网站中,点上的颜色也有黄色(浅色部分)和蓝色(文中深色部分),和边上颜色类似,黄色越深表示负得越大,蓝色越深表示正得越大。
- 在TensorFlow游乐场中,y轴左侧为黄色(浅色部分),右侧为蓝色(深色部分)。
目录
相关文章
|
5月前
|
机器学习/深度学习 TensorFlow API
TensorFlow与Keras实战:构建深度学习模型
本文探讨了TensorFlow和其高级API Keras在深度学习中的应用。TensorFlow是Google开发的高性能开源框架,支持分布式计算,而Keras以其用户友好和模块化设计简化了神经网络构建。通过一个手写数字识别的实战案例,展示了如何使用Keras加载MNIST数据集、构建CNN模型、训练及评估模型,并进行预测。案例详述了数据预处理、模型构建、训练过程和预测新图像的步骤,为读者提供TensorFlow和Keras的基础实践指导。
393 59
|
5月前
|
机器学习/深度学习 人工智能 算法
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
海洋生物识别系统。以Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经网络算法,通过对22种常见的海洋生物('蛤蜊', '珊瑚', '螃蟹', '海豚', '鳗鱼', '水母', '龙虾', '海蛞蝓', '章鱼', '水獭', '企鹅', '河豚', '魔鬼鱼', '海胆', '海马', '海豹', '鲨鱼', '虾', '鱿鱼', '海星', '海龟', '鲸鱼')数据集进行训练,得到一个识别精度较高的模型文件,然后使用Django开发一个Web网页平台操作界面,实现用户上传一张海洋生物图片识别其名称。
181 7
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
|
5月前
|
机器学习/深度学习 人工智能 算法
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
乐器识别系统。使用Python为主要编程语言,基于人工智能框架库TensorFlow搭建ResNet50卷积神经网络算法,通过对30种乐器('迪吉里杜管', '铃鼓', '木琴', '手风琴', '阿尔卑斯号角', '风笛', '班卓琴', '邦戈鼓', '卡萨巴', '响板', '单簧管', '古钢琴', '手风琴(六角形)', '鼓', '扬琴', '长笛', '刮瓜', '吉他', '口琴', '竖琴', '沙槌', '陶笛', '钢琴', '萨克斯管', '锡塔尔琴', '钢鼓', '长号', '小号', '大号', '小提琴')的图像数据集进行训练,得到一个训练精度较高的模型,并将其
71 0
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
|
5月前
|
机器学习/深度学习 人工智能 TensorFlow
TensorFlow 是一个由 Google 开发的开源深度学习框架
TensorFlow 是一个由 Google 开发的开源深度学习框架
70 3
|
2月前
|
机器学习/深度学习 数据挖掘 TensorFlow
解锁Python数据分析新技能,TensorFlow&PyTorch双引擎驱动深度学习实战盛宴
在数据驱动时代,Python凭借简洁的语法和强大的库支持,成为数据分析与机器学习的首选语言。Pandas和NumPy是Python数据分析的基础,前者提供高效的数据处理工具,后者则支持科学计算。TensorFlow与PyTorch作为深度学习领域的两大框架,助力数据科学家构建复杂神经网络,挖掘数据深层价值。通过Python打下的坚实基础,结合TensorFlow和PyTorch的强大功能,我们能在数据科学领域探索无限可能,解决复杂问题并推动科研进步。
58 0
|
2月前
|
机器学习/深度学习 数据挖掘 TensorFlow
从数据小白到AI专家:Python数据分析与TensorFlow/PyTorch深度学习的蜕变之路
【9月更文挑战第10天】从数据新手成长为AI专家,需先掌握Python基础语法,并学会使用NumPy和Pandas进行数据分析。接着,通过Matplotlib和Seaborn实现数据可视化,最后利用TensorFlow或PyTorch探索深度学习。这一过程涉及从数据清洗、可视化到构建神经网络的多个步骤,每一步都需不断实践与学习。借助Python的强大功能及各类库的支持,你能逐步解锁数据的深层价值。
61 0
|
3月前
|
持续交付 测试技术 jenkins
JSF 邂逅持续集成,紧跟技术热点潮流,开启高效开发之旅,引发开发者强烈情感共鸣
【8月更文挑战第31天】在快速发展的软件开发领域,JavaServer Faces(JSF)这一强大的Java Web应用框架与持续集成(CI)结合,可显著提升开发效率及软件质量。持续集成通过频繁的代码集成及自动化构建测试,实现快速反馈、高质量代码、加强团队协作及简化部署流程。以Jenkins为例,配合Maven或Gradle,可轻松搭建JSF项目的CI环境,通过JUnit和Selenium编写自动化测试,确保每次构建的稳定性和正确性。
60 0
|
3月前
|
测试技术 数据库
探索JSF单元测试秘籍!如何让您的应用更稳固、更高效?揭秘成功背后的测试之道!
【8月更文挑战第31天】在 JavaServer Faces(JSF)应用开发中,确保代码质量和可维护性至关重要。本文详细介绍了如何通过单元测试实现这一目标。首先,阐述了单元测试的重要性及其对应用稳定性的影响;其次,提出了提高 JSF 应用可测试性的设计建议,如避免直接访问外部资源和使用依赖注入;最后,通过一个具体的 `UserBean` 示例,展示了如何利用 JUnit 和 Mockito 框架编写有效的单元测试。通过这些方法,不仅能够确保代码质量,还能提高开发效率和降低维护成本。
49 0
|
3月前
|
UED 开发者
哇塞!Uno Platform 数据绑定超全技巧大揭秘!从基础绑定到高级转换,优化性能让你的开发如虎添翼
【8月更文挑战第31天】在开发过程中,数据绑定是连接数据模型与用户界面的关键环节,可实现数据自动更新。Uno Platform 提供了简洁高效的数据绑定方式,使属性变化时 UI 自动同步更新。通过示例展示了基本绑定方法及使用 `Converter` 转换数据的高级技巧,如将年龄转换为格式化字符串。此外,还可利用 `BindingMode.OneTime` 提升性能。掌握这些技巧能显著提高开发效率并优化用户体验。
59 0
下一篇
无影云桌面