什么是TensorFlow? 机器学习库介绍

机器学习是一门复杂的学科。 但是,由于使用了机器学习框架(例如Google的TensorFlow) ,实现了机器学习模型的难度和难度远没有以前那么困难,因为它简化了数据获取,训练模型,提供预测以及完善未来结果的过程。

TensorFlow由Google Brain团队创建,是一个用于数值计算和大规模机器学习的开源库。 TensorFlow将大量的机器学习和深度学习(也称为神经网络)模型和算法捆绑在一起,并通过一个通用的隐喻使其变得有用。 它使用Python为使用框架构建应用程序提供了便捷的前端API,同时在高性能C ++中执行这些应用程序。

[理解机器学习的意义: 人工智能,机器学习和深度学习:您需要知道的一切 | 深度学习解释了 | 机器学习的解释 | 机器学习算法进行了解释 | 软件工程师的机器学习技能 | 通过InfoWorld大数据和分析报告时事通讯深入了解分析和大数据。 ]

TensorFlow可以训练和运行深度神经网络,以进行手写数字分类,图像识别,单词嵌入,递归神经网络,用于机器翻译的序列到序列模型,自然语言处理以及基于PDE(偏微分方程)的模拟。 最重要的是,TensorFlow使用与培训相同的模型来支持大规模生产预测。

TensorFlow的工作方式

TensorFlow允许开发人员创建数据流图-描述数据如何通过或一系列处理节点移动的结构。 图中的每个节点表示一个数学运算,节点之间的每个连接或边都是多维数据数组或张量

TensorFlow通过Python语言为程序员提供了所有这些功能。 Python易于学习和使用,并提供了表达高级抽象如何耦​​合在一起的便捷方法。 TensorFlow中的节点和张量是Python对象,而TensorFlow应用程序本身就是Python应用程序。

但是,实际的数学运算不是在Python中执行的。 通过TensorFlow可用的转换库被编写为高性能C ++二进制文件。 Python只是在各部分之间进行通信,并提供高级编程抽象以将它们连接在一起。

TensorFlow应用程序可以在大多数方便的目标上运行:本地计算机,云中的集群,iOS和Android设备,CPU或GPU。 如果您使用Google自己的云,则可以在Google的自定义TensorFlow处理单元 (TPU)芯片上运行TensorFlow以进一步加速。 不过,由TensorFlow创建的结果模型可以部署在大多数将用于预测的设备上。

TensorFlow 2.0(于2019年10月发布)基于用户反馈以多种方式对框架进行了改进,以使其更易于使用(例如,通过使用相对简单的Keras API进行模型训练)和更高的性能。 借助新的API,分布式培训更易于运行,并且对TensorFlow Lite的支持使得可以在各种平台上部署模型。 但是,必须重新编写为TensorFlow的早期版本编写的代码(有时仅需稍作修改,有时甚至是大量修改),以充分利用TensorFlow 2.0的新功能。

TensorFlow的好处

TensorFlow为机器学习开发提供的最大的好处就是抽象。 开发人员可以专注于应用程序的整体逻辑,而不必处理实现算法的具体细节,也不必弄清楚将一个函数的输出连接到另一个函数的输入的正确方法。 TensorFlow负责幕后细节。

TensorFlow为需要调试并自省TensorFlow应用程序的开发人员提供了更多便利。 渴望的执行模式使您能够分别透明地评估和修改每个图形操作,而不是将整个图形构造为单个不透明对象并立即对其进行评估。 TensorBoard可视化套件可让您检查和分析通过基于Web的交互式仪表板运行图形的方式。

TensorFlow还受益于Google的A-list商业机构的支持。 Google不仅推动了该项目的快速发展,而且围绕TensorFlow开发了许多重要的产品,这些产品使部署和使用变得更加容易:上述TPU硅片可加快Google云的性能; 一个在线中心,用于共享使用框架创建的模型; 浏览器内移动友好的框架的体现; 还有更多

一个警告:TensorFlow的实现的一些细节使得很难获得某些培训工作的完全确定性的模型培训结果。 有时在一个系统上训练的模型与在另一个系统上训练的模型会略有不同,即使向它们提供了完全相同的数据也是如此。 这样做的原因很棘手,例如, 随机数的播种方式以及在 使用GPU时 在何处 或某些不确定性行为 。 也就是说,可以解决这些问题 ,并且TensorFlow的团队正在考虑使用更多控件来影响工作流中的确定性。

相关视频:机器学习和AI破译

通过围绕机器学习和人工智能的炒作,我们的小组讨论了该技术的定义和含义。

TensorFlow与竞争对手

TensorFlow与众多其他机器学习框架竞争。 PyTorch,CNTK和MXNet是满足许多相同需求的三个主要框架。 下面我指出了他们在与TensorFlow脱颖而出的地方。

  • PyTorch除了使用Python进行构建外,还与TensorFlow有许多其他相似之处:引擎盖下的硬件加速组件,高度交互的开发模型,允许您按需进行设计,并且已经包含许多有用的组件。 对于需要在短时间内启动并运行的项目的快速开发,PyTorch通常是更好的选择,但是TensorFlow对于大型项目和更复杂的工作流而言胜出。

  • 类似于TensorFlow的CNTK (Microsoft认知工具包)使用图结构描述数据流,但最着重于创建深度学习神经网络。 CNTK可以更快地处理许多神经网络作业,并具有更广泛的API集(Python,C ++,C#,Java)。 但是CNTK目前不像TensorFlow那样容易学习或部署。

  • 亚马逊(Amazon)将其用作AWS上主要的深度学习框架, Apache MXNet可以在多个GPU和多台机器之间几乎线性地扩展。 它还支持广泛的语言API(Python,C ++,Scala,R,JavaScript,Julia,Perl,Go),尽管其本机API并不像TensorFlow那样令人愉快。

From: https://www.infoworld.com/article/3278008/what-is-tensorflow-the-machine-learning-library-explained.html