揭开TensorFlow的小秘密,机器学习轻松行!

TensorFlow是一个用于数值计算的Python友好的开源库,可以让机器学习变得更快更轻松 。

揭开TensorFlow的小秘密,机器学习轻松行!

机器学习是一门复杂的学科。但是,由于机器学习框架(如Google的TensorFlow),实现机器学习模型的过程变得远没有以前那么艰巨和困难了,因为它简化了数据采集、训练模型、服务预测和提炼未来结果的过程。

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

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的好处

TensorFlow为机器学习开发提供的最大好处是抽象。与其处理实现算法的细节,或者找出将一个函数的输出然后连接到另一个函数的输出的正确方法,开发人员可以专注于应用程序的整体逻辑,TensorFlow则负责幕后的细节。

揭开TensorFlow的小秘密,机器学习轻松行!

TensorFlow为需要调试并获得TensorFlow应用程序内省的开发人员提供了额外的便利。这种执行模式可让您分别透明地评估和修改每个图形操作,而不是将整个图形构建为单个不透明对象,并一次对其进行评估。通过TensorBoard可视化套件,您可以通过交互式的基于Web的仪表板检查和分析图形的运行方式。

当然,TensorFlow在Google的A级商业机构的支持下获得了许多优势。 Google不仅推动了项目背后的快速发展,而且还创造了许多重要的TensorFlow产品,这些产品更易于部署并更易于使用:上述TPU芯片可提高Google云性能;一个与该框架共享模型的在线中心;浏览器和移动友好的框架化身以及更多。

需要注意的是:TensorFlow实施的一些细节使得很难为某些训练工作获得完全确定性的模型训练结果。有时,训练在一个系统上的模型与训练另一个系统的模型会有所不同,即使它们被输入完全相同的数据。

TensorFlow与竞争对手

TensorFlow与其他一些机器学习框架竞争。PyTorch、CNTK和MXNet是解决许多相同需求的三个主要框架。下面我已经注意到他们脱颖而出的地方,并对TensorFlow做了简短的介绍。

揭开TensorFlow的小秘密,机器学习轻松行!

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

微软认知工具包CNTK像TensorFlow一样使用图形结构来描述数据流,但最需呀关注的是创建深度学习神经网络。CNTK可以更快地处理许多神经网络工作,并且拥有更广泛的API(Python,C ++,C#,Java)。但是CNTK目前并不像TensorFlow那样容易学习或部署。

亚马逊作为AWS首选的深度学习框架,采用的Apache MXNet可以跨多个GPU和多台机器几乎线性扩展。它还支持各种各样的语言API(Python,C ++,Scala,R,JavaScript,Julia,Perl,Go)。


分享到:


相關文章: