专栏名称: 机器之心
目录
相关文章推荐
机器之心  ·  DeepSeek一口气开源3个项目,还有梁文 ... ·  20 小时前  
爱可可-爱生活  ·  通过因果视角揭示和增强思维链推理 ... ·  昨天  
机器学习研究组订阅  ·  英伟达下场,首次优化DeepSeek-R1! ... ·  昨天  
爱可可-爱生活  ·  【[87星]BreezyVoice:为台湾闽 ... ·  昨天  
AI范儿  ·  AI 创业公司估值排行榜:从 ... ·  昨天  
51好读  ›  专栏  ›  机器之心

官方解读:TensorFlow 2.0中即将到来的所有新特性

机器之心  · 掘金  · AI  · 2019-01-16 03:09

正文

阅读 46

官方解读:TensorFlow 2.0中即将到来的所有新特性

选自Medium,作者:TensorFlow,机器之心编译。

四天前, TensorFlow 2.0 预览版终于上线 了,看来稳定版距离我们也不会太远——按照官方说法会是今年的第一个季度。近日, TensorFlow 官方博客全面介绍了 2.0 版的所有新特性。为了让开发者们简单高效地搭建模型,2.0 版本经过了大幅度重建。

作为最流行的深度学习框架,TensorFlow 已经成长为全球使用最广泛的机器学习平台。目前,TensorFlow 的开发者社区包括研究者、开发者和企业等。

去年 11 月,TensorFlow 庆祝了自己的三岁生日。不久之后,也将迎来另一个重要里程碑——TensorFlow 2.0。

TensorFlow 2.0 将专注于简洁性和易用性,主要升级方向包括:

  • 使用 Keras 和 eager execution 轻松构建模型。

  • 在任意平台上实现稳健的生产环境模型部署。

  • 为研究提供强大的实验工具。

  • 通过清理废弃的 API 和减少重复来简化 API。

谷歌表示,在过去几年里,TensorFlow 增加了很多组件。通过 TensorFlow 2.0 版本的大幅度重建,这些功能将被打包成为一个综合平台,支持从训练到部署的整个机器学习工作流程。下图简要展示了 TensorFlow 2.0 的新架构:

Note:虽然上图的训练部分侧重 Python API,但是 TensorFlow.js 也支持训练模型。TensorFlow 2.0 对其他语言也有不同程度的支持,包括 Swift、R 语言和 Julia。

轻松构建模型

TensorFlow 团队近期宣布 Keras API 将成为 TensorFlow 中构建和训练模型的核心高级 API。Keras API 使得使用 TensorFlow 开启项目变得简单。重要的是,Keras 提供多个模型构建 API(Sequential、Functional 和 Subclassing),这样你可以选择适合自己项目的抽象级别。TensorFlow 的实现有多项增强,包括可直接迭代和直观调试的 eager execution,以及用于构建可扩展输入流程的 tf.data。

以下是工作流程示例(在接下里的几个月中,我们将努力更新以下链接的指南):

  1. 用 tf.data 加载数据。用 tf.data 创建的输入线程读取训练数据。使用 tf.feature_column 描述特征特性,例如分段和特征交叉。还支持从内存数据(例如 NumPy)中方便地输入。

  2. 使用 tf.keras、Premade Estimators 构建、训练和验证模型。Keras 与 TensorFlow 的其余部分紧密集成,因此你可以随时访问 TensorFlow 的功能。一组标准的打包模型(例如,线性或逻辑回归、梯度增强树、随机森林)也可以直接使用(使用 tf.estimator API 实现)。如果你不想从头开始训练一个模型,你很快就能通过 TensorFlow Hub 的模块利用迁移学习来训练 Keras 或 Estimator 模型。

  3. 用 eager execution 运行和调试,然后在图形上使用 tf.function。TensorFlow 2.0 默认用 eager execution 运行,以便于轻松使用和顺利调试。此外,tf.function 注释透明地将 Python 程序转换成 TensorFlow 图。这个过程保留了 TensorFlow1.x 基于图形执行的所有优点:性能优化、远程执行,以及序列化、导出和部署的能力,同时增加了用简单 Python 表达程序的灵活性和易用性。

  4. 使用分布式策略进行分布式训练。对于大部分 ML 训练任务来说,Distribution Strategy API 使得在不同的硬件配置上分布和训练模型变得很容易,而无需改变模型定义。由于 TensorFlow 为一系列硬件加速器(如 CPU、GPU、TPU)提供支持,你可以将训练工作负载分配给单节点/多加速器以及多节点/多加速器配置,包括 TPU Pods。尽管这个 API 支持多种群集配置,但提供了在本地或云环境中的 Kubernete 集群上部署训练的模板。

  5. 导出至 SavedModel。TensorFlow 将在 SavedModel 上标准化,来作为 TentsorFlow Serving、TensorFlow Lite、TensorFlow.js、TentsorFlow Hub 等的交换格式。

在任意平台上实现稳健的生产环境模型部署

TensorFlow 总是会提供直接的产品化路径。不论是在服务器、边缘设备还是网页上,也不论你使用的是什么语言或平台,TensorFlow 总能让你轻易训练和部署模型。在 TensorFlow 2.0 中,我们正在通过标准化交换格式和调整 API 来改进跨平台和组件的兼容性和奇偶性(parity)。

  • TensorFlow Serving:允许通过 HTTP/REST 或 gRPC /协议缓冲区为模型提供服务的 TensorFlow 库。

  • TensorFlow Lite:TensorFlow 针对移动和嵌入式设备的轻量级解决方案提供了在 Android、iOS 和嵌入式系统(如 Raspberry Pi 和 Edge TPU)上部署模型的能力。

  • TensorFlow.js:支持在 JavaScript 环境中部署模型,例如通过 Node.js. TensorFlow.js 在 web 浏览器或服务器端部署模型,还支持在 JavaScript 中定义模型和在 web 浏览器中使用类似 Keras 的 API 直接训练模型。

TensorFlow 还支持其它语言(由更广泛的社区维护),包括:C、Java、Go、C#、Rust、 Julia 、R 等等。

为研究提供强大的实验工具

TensorFlow 使得从概念到代码和从模型到出版物中获取新想法变得更加容易。TensorFlow 2.0 结合了很多功能,能够在不牺牲速度或性能的情况下定义和训练最先进的模型:

  • Keras Functional API 和 Model Subclassing API:允许创建复杂的拓扑,包括使用残差层、自定义多输入/输出模型以及强制编写的正向传递。

  • 自定义训练逻辑:用 tf.GradientTape 和 tf.custom_gradient 对梯度计算进行细粒度控制。

  • 为了获得更强的灵活性和控制,低级 TensorFlow API 始终可用,并与更高级别的抽象一起工作,以实现完全可定制的逻辑。

TensorFlow 2.0 新添了一些附加功能,让研究人员和高级用户可以使用丰富的插件来进行实验,如 Ragged Tensors、TensorFlow Probability、Tensor2Tensor 等。

除了这些功能之外,TensorFlow 还提供了易于制作原型和调试的 eager execution,可以大规模训练的 Distribution Strategy API 和 AutoGraph,以及对 TPU 的支持,使 TensorFlow 2.0 成为一个易于使用、可定制和高度可扩展的平台,用于展开最先进的 ML 研究并将该研究转化为生产流水线。

TensorFlow 1.x 和 2.0 的区别

自我们开源 TensorFlow 以来,到现在已经发展出很多个版本和 API 迭代。随着 ML 的快速发展,这个平台也有了巨大的进展,现在支持很多具有不同需求的不同用户。有了 TensorFlow 2.0,我们有机会基于语义版本控制来清理和模块化平台。







请到「今天看啥」查看全文