什么是TensorFlow?机器学习库的解释

什么是TensorFlow?机器学习库的解释

TensorFlow是一个对Python友好的开源数值计算库,它使机器学习和开发神经网络更快、更容易。

  • Share on Facebook
  • Share on Twitter
  • Share on LinkedIn
  • Share on Reddit
  • Share by Email
  • Print resource

Serdar Yegulalp作者: Serdar Yegulalp

InfoWorld高级撰稿人

KTSimage / Getty Images

目录

显示更多

机器学习是一门复杂的学科,但实施机器学习模型远没有以前那么令人生畏,这要归功于机器学习框架--比如谷歌的TensorFlow--它简化了获取数据、训练模型、提供预测和完善未来结果的过程。

TensorFlow由谷歌大脑团队创建,最初于2015年向公众发布,是一个用于数值计算和大规模机器学习的开源库。TensorFlow将一系列的机器学习和深度学习模型和算法*(又称* 神经网络)捆绑在一起,并通过常见的程序化隐喻使其发挥作用。它使用Python或JavaScript来提供一个方便的前端API来构建应用程序,同时用高性能的C++来执行这些应用程序。

[让机器学习有意义。AI、机器学习和深度学习。你需要知道的一切。|深度学习的解释。|机器学习解释。|机器学习算法解释。| 解释机器学习的算法。| 通过InfoWorld大数据和分析报告通讯深入了解分析和大数据。]

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

TensorFlow也有一个广泛的预训练模型库,可以在你自己的项目中使用。你也可以使用TensorFlow模型园的代码作为训练你自己模型的最佳实践的例子。

TensorFlow如何工作

TensorFlow允许开发者创建数据流图--描述数据如何在中移动的结构,或一系列的处理节点。图中的每个节点代表一个数学操作,节点之间的每个连接或边缘是一个多维数据阵列,或张量

TensorFlow应用程序可以在大多数方便的目标上运行:本地机器、云中的集群、iOS和Android设备、CPU或GPU。如果你使用谷歌自己的云,你可以在谷歌定制的TensorFlow处理单元(TPU)芯片上运行TensorFlow以进一步加速。不过,由TensorFlow创建的结果模型可以部署在大多数设备上,它们将被用来提供预测。

2019年10月发布的TensorFlow 2.0在许多方面根据用户反馈对框架进行了改造,使其更容易操作(例如,通过使用相对简单的KerasAPI进行模型训练)和更多的性能。由于新的API,分布式训练更容易运行,对TensorFlow Lite的支持使其有可能在更多的平台上部署模型。然而,为早期版本的TensorFlow编写的代码必须重写--有时只是轻微的,有时是显著的,以最大限度地利用TensorFlow 2.0的新功能。

一个训练有素的模型可以通过Docker容器使用REST或gRPC APIs作为服务来提供预测。对于更高级的服务场景,你可以使用Kubernetes

用Python使用TensorFlow

TensorFlow通过Python语言为程序员提供了所有这些。Python很容易学习和使用,它提供了方便的方式来表达如何将高层抽象耦合在一起。TensorFlow支持Python的3.7到3.10版本,虽然它可能在Python的早期版本上工作,但并不保证能做到。

TensorFlow中的节点和张量是Python对象,而TensorFlow应用程序本身就是Python应用程序。然而,实际的数学运算并不是在Python中进行的。通过TensorFlow提供的转换库被写成高性能的C++二进制文件。Python只是在各部分之间引导交通,并提供高层次的编程抽象,将它们连接在一起。

TensorFlow中的高级工作--创建节点和层并将它们连接起来--使用Keras库。Keras的API从外表上看很简单;一个有三层的基本模型可以在不到10行的代码中定义,而同样的训练代码只需要几行代码。但如果你想 "掀开引擎盖",做更精细的工作,比如编写你自己的训练循环,你可以这样做。

用JavaScript使用TensorFlow

Python是使用TensorFlow和机器学习的最流行的语言。但JavaScript现在也是TensorFlow的一流语言,JavaScript的巨大优势之一是它可以在任何有网络浏览器的地方运行。

TensorFlow.js,正如JavaScript TensorFlow库所称,使用WebGL API,通过系统中可用的任何GPU来加速计算。也可以使用WebAssembly后端来执行,如果你只在CPU上运行,它比普通的JavaScript后端更快,尽管最好尽可能使用GPU。预建模型可以让你用简单的项目启动和运行,让你了解事情是如何运作的。

[ 也在InfoWorld上。Martin Heller的《TensorFlow的JavaScript使用指南》让你了解了创建可以在浏览器中运行的机器学习模型的基础知识。]

TensorFlow Lite

经过训练的TensorFlow模型也可以部署在边缘计算或移动设备上,如iOS或Android系统。TensorFlow Lite工具集优化了TensorFlow模型,使其在这些设备上运行良好,允许你在模型大小和精度之间做出权衡。一个较小的模型(即12MB相对于25MB,甚至100+MB)是不太准确的,但准确度的损失通常很小,并且被模型的速度和能源效率所抵消。

为什么使用TensorFlow

TensorFlow为机器学习开发提供的最大好处是抽象化。开发者可以专注于整体的应用逻辑,而不是处理实现算法的细枝末节,或找出适当的方法将一个函数的输出与另一个函数的输入挂钩。TensorFlow负责处理幕后的细节问题。

TensorFlow为那些需要对TensorFlow应用程序进行调试和自省的开发者提供了额外的便利。每个图的操作都可以单独和透明地被评估和修改,而不是把整个图构造成一个不透明的对象并一次性评估。这种所谓的 "急切执行模式",在旧版本的TensorFlow中作为一个选项提供,现在已经成为标准。

TensorBoard可视化套件让你通过一个交互式的、基于网络的仪表盘来检查和剖析图的运行方式。一个服务,Tensorboard.dev(由谷歌托管),让你托管和分享用TensorFlow编写的机器学习实验。它是免费使用的,可以存储高达100M的标量,1GB的张量数据,和1GB的二进制对象数据。(请注意,任何托管在Tensorboard.dev中的数据都是公开的,所以不要把它用于敏感的项目)。

TensorFlow还从谷歌这个A级商业机构的支持中获得了许多优势。谷歌推动了该项目背后的快速发展,并创造了许多重要的产品,使TensorFlow更容易部署和使用。上面提到的在谷歌云中加速性能的TPU芯片只是一个例子。

用TensorFlow进行确定性的模型训练

TensorFlow实现的一些细节使得一些训练工作很难获得完全确定的模型训练结果。有时,在一个系统上训练的模型会与在另一个系统上训练的模型略有不同,即使它们被输入完全相同的数据。造成这种差异的原因很复杂--一个原因是随机数的播种方式和地点;另一个原因是使用GPU时某些非确定性行为有关。TensorFlow的2.0分支有一个选项,可以通过几行代码在整个工作流中启用确定性。然而,这个功能是以性能为代价的,只应在调试工作流时使用。

相关视频。机器学习和人工智能解密

突破机器学习和人工智能的炒作,我们的小组讨论了该技术的定义和影响。

TensorFlow与PyTorch、CNTK和MXNet的比较

TensorFlow与其他一系列的机器学习框架竞争。PyTorch、CNTK和MXNet是解决许多相同需求的三个主要框架。让我们来看看它们在哪些方面比TensorFlow更突出,更有优势。

  • PyTorch是用Python构建的,与TensorFlow有许多其他相似之处:引擎盖下的硬件加速组件、允许边设计边工作的高度互动的开发模型,以及已经包含的许多有用的组件。对于需要在短时间内启动和运行的项目的快速开发,PyTorch通常是一个更好的选择,但对于更大的项目和更复杂的工作流程,TensorFlow胜出。
  • CNTK,微软认知工具包,与TensorFlow一样,使用图结构来描述数据流,但它主要侧重于创建深度学习神经网络。CNTK能更快地处理许多神经网络工作,并有更广泛的API集(Python、C++、C#、Java)。但它目前并不像TensorFlow那样容易学习或部署。它也只在GNU GPL 3.0许可下可用,而TensorFlow则在更自由的Apache许可下可用。而且CNTK的开发并不积极;最后一个主要版本是在2019年。
  • Apache MXNet被亚马逊采用为AWS上的主要深度学习框架,可以在多个GPU和多个机器上几乎线性地扩展。MXNet还支持广泛的语言API--Python、C++、Scala、R、JavaScript、Julia、Perl、Go--尽管它的本地API不像TensorFlow那样令人愉快。它的用户和开发者社区也小得多。

相关的。

Serdar Yegulalp是InfoWorld的高级作家,专注于机器学习、容器化、devops、Python生态系统和定期评论。

关注

Copyright © 2022 IDG Communications, Inc.

如何选择一个低代码开发平台

猜你喜欢

转载自juejin.im/post/7126525046062841870