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

机器学习是一门复杂的学科,但实施机器学习模型远没有过去那么令人生畏,这要归功于机器学习框架——例如谷歌的 TensorFlow——简化了获取数据、训练模型、提供预测和完善未来结果的过程.
TensorFlow 由 Google Brain 团队创建,最初于 2015 年向公众发布,是一个用于数值计算和大规模机器学习的开源库。 TensorFlow 将大量机器学习和深度学习模型和算法(也称为神经网络)捆绑在一起,并通过常见的编程隐喻使它们变得有用。它使用 Python 或 JavaScript 为构建应用程序提供方便的前端 API,同时在高性能 C++ 中执行这些应用程序。
TensorFlow 与 PyTorch 和 Apache MXNet 等框架竞争,可以训练和运行深度神经网络,用于手写数字分类、图像识别、词嵌入、递归神经网络、用于机器翻译的序列到序列模型、自然语言处理,以及基于 PDE(偏微分方程)的模拟。最重要的是,TensorFlow 支持大规模生产预测,使用与训练相同的模型。
TensorFlow 还有一个广泛的预训练模型库,可以在您自己的项目中使用。您还可以使用 TensorFlow Model Garden 中的代码作为训练您自己的模型的最佳实践示例。
TensorFlow 允许开发人员创建数据流图——描述数据如何通过图或一系列处理节点移动的结构。图中的每个节点代表一个数学运算,节点之间的每个连接或边都是一个多维数据数组或张量。
TensorFlow 应用程序可以在大多数任何方便的目标上运行:本地机器、云中的集群、iOS 和 Android 设备、CPU 或 GPU。如果您使用谷歌自己的云,您可以在谷歌定制的 TensorFlow 处理单元 (TPU) 芯片上运行 TensorFlow 以进一步加速。不过,由 TensorFlow 创建的结果模型可以部署在大多数用于提供预测服务的设备上。
2019 年 10 月发布的 TensorFlow 2.0 根据用户反馈以多种方式改进了框架,使其更易于使用(例如,通过使用相对简单的 Keras API 进行模型训练)和更高的性能。得益于新的 API,分布式训练更容易运行,并且对 TensorFlow Lite 的支持使得在更多种类的平台上部署模型成为可能。但是,必须重写为早期版本的 TensorFlow 编写的代码——有时只是轻微重写,有时是重写——以最大限度地利用新的 TensorFlow 2.0 功能。
经过训练的模型可用于通过使用 REST 或 gRPC API 的 Docker 容器将预测作为服务提供。对于更高级的服务场景,您可以使用 Kubernetes
TensorFlow 通过 Python 语言为程序员提供了所有这些。 Python 易于学习和使用,它提供了方便的方法来表达如何将高级抽象耦合在一起。 TensorFlow 在 Python 3.7 到 3.10 版本上受支持,虽然它可以在 Python 的早期版本上工作,但不能保证这样做。
TensorFlow 中的节点和张量是 Python 对象,TensorFlow 应用程序本身就是 Python 应用程序。然而,实际的数学运算并不是在 Python 中执行的。通过 TensorFlow 可用的转换库被编写为高性能 C++ 二进制文件。 Python 只是在各个部分之间引导流量,并提供高级编程抽象以将它们连接在一起。
TensorFlow 中的高级工作——创建节点和层并将它们链接在一起——使用 Keras 库。 Keras API 表面上很简单;一个三层的基本模型可以用不到 10 行代码定义,而同样的训练代码只需要多几行代码。但是如果你想“揭开面纱”并做更细粒度的工作,比如编写你自己的训练循环,你可以这样做。
一般来说,Python 是使用 TensorFlow 和机器学习的最流行的语言。但 JavaScript 现在也是 TensorFlow 的一流语言,而 JavaScript 的巨大优势之一是它可以在任何有网络浏览器的地方运行。
TensorFlow.js,作为 JavaScript TensorFlow 库的名称,使用 WebGL API 通过系统中可用的任何 GPU 来加速计算。也可以使用 WebAssembly 后端来执行,如果你只在 CPU 上运行,它比常规的 JavaScript 后端更快,尽管最好尽可能使用 GPU。预建模型让您可以启动并运行简单的项目,让您了解事情是如何运作的。
经过训练的 TensorFlow 模型也可以部署在边缘计算或移动设备上,例如 iOS 或 Android 系统。 TensorFlow Lite 工具集优化 TensorFlow 模型以在此类设备上良好运行,允许您在模型大小和准确性之间进行权衡。较小的模型(即 12MB 与 25MB,甚至 100+MB)的准确性较低,但准确性损失通常很小,并且被模型的速度和能效所抵消。
TensorFlow 为机器学习开发提供的最大好处是抽象。开发人员无需处理实现算法的具体细节,或找出将一个函数的输出连接到另一个函数的输入的正确方法,而是可以专注于整体应用程序逻辑。 TensorFlow 会处理幕后的细节。
TensorFlow 为需要调试和自省 TensorFlow 应用程序的开发人员提供了额外的便利。每个图形操作都可以单独和透明地评估和修改,而不是将整个图形构建为一个不透明的对象并立即对其进行评估。这种所谓的“急切执行模式”在旧版本的 TensorFlow 中作为一个选项提供,现在已成为标准。
TensorBoard 可视化套件让您可以通过基于 Web 的交互式仪表板检查和分析图形的运行方式。 Tensorboard.dev(由 Google 托管)服务可让您托管和共享用 TensorFlow 编写的机器学习实验。它可以免费使用,最多可存储 100M 标量、1GB 张量数据和 1GB 二进制对象数据。 (请注意,托管在 Tensorboard.dev 中的任何数据都是公开的,因此不要将其用于敏感项目。)
TensorFlow 还从谷歌一流商业机构的支持中获得了许多优势。 Google 推动了该项目背后的快速开发步伐,并创建了许多重要的产品,使 TensorFlow 更易于部署和使用。上述用于在谷歌云中加速性能的 TPU 芯片只是一个例子。
TensorFlow 实现的一些细节使得某些训练作业很难获得完全确定的模型训练结果。有时,在一个系统上训练的模型与在另一个系统上训练的模型会略有不同,即使它们被输入完全相同的数据。造成这种差异的原因很微妙——一个原因是随机数的播种方式和位置;另一个与使用 GPU 时的某些非确定性行为有关。 TensorFlow 的 2.0 分支有一个选项,可以通过几行代码在整个工作流中启用确定性。但是,此功能会以性能为代价,并且只能在调试工作流时使用。
打破围绕机器学习和人工智能的炒作,我们的小组讨论了该技术的定义和含义。
TensorFlow 与许多其他机器学习框架竞争。 PyTorch、CNTK 和 MXNet 是解决许多相同需求的三个主要框架。

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627