得益于令人难以置信的多元化社区,TensorFlow 已成长为世界上最受喜爱和广泛采用的 ML 平台之一。该社区包括:

  • 研究人员(例如,预测地震余震和检测乳腺癌)。
  • 开发人员(例如,构建应用程序来识别患病植物并帮助人们减肥)。
  • 公司(例如,通过eBay、Dropbox和AirBnB来改善他们的客户体验)。
    还有许多其他人。

11 月,2019年TensorFlow庆祝了它的 3 岁生日,回顾了这些年来添加的功能。我们对另一个重要里程碑 TensorFlow 2.0 感到兴奋。
TensorFlow 2.0 将专注于简单性和易用性,更新如下:

  • 使用 Keras 和渴望的执行。
  • 在任何平台上的生产中进行强大的模型部署。
  • 强大的研究实验。
  • 通过清理已弃用的 API 和减少重复来简化 API。

在过去几年中,我们向 TensorFlow 添加了许多组件。借助 TensorFlow 2.0,这些将被打包成一个综合平台,支持从训练到部署的机器学习工作流程。让我们用一个简化的概念图来看看 TensorFlow 2.0 的新架构,如下所示:

注意:虽然此图的训练部分侧重于 Python API,但TensorFlow.js也支持训练模型。其他语言绑定也存在不同程度的支持,包括:Swift、R和Julia。

1. 简单的模型构建

在最近的一篇博文中,我们宣布Keras是一种用户友好的机器学习 API 标准,将成为用于构建和训练模型的中央高级 API。Keras API 使您可以轻松开始使用 TensorFlow。重要的是,Keras 提供了几个模型构建 API(顺序、功能和子类化),因此您可以为您的项目选择正确的抽象级别。TensorFlow 的实现包含增强功能,包括急切执行,用于立即迭代和直观调试,以及 tf.data,用于构建可扩展的输入管道。

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

  1. 使用 加载您的数据tf.data。使用创建的输入管道读取训练数据tf.data。使用 描述特征特征,例如分桶和特征交叉tf.feature_column。还支持来自内存数据(例如 NumPy)的便捷输入。
  2. tf.keras使用 或使用Premade Estimators构建、训练和验证您的模型。Keras 与 TensorFlow 的其余部分紧密集成,因此您可以随时访问 TensorFlow 的功能。一组标准打包模型(例如,线性或逻辑回归、梯度提升树、随机森林)也可以直接使用(使用tf.estimatorAPI 实现)。如果您不想从头开始训练模型,那么您很快就可以使用TensorFlow Hub中的模块使用迁移学习来训练 Keras 或 Estimator 模型。
  3. 使用Eager execution运行和调试,然后使用tf.function图表的好处。TensorFlow 2.0 默认以 Eager Execution 运行,以便于使用和顺利调试。此外,tf.function 注释将您的 Python 程序透明地转换为 TensorFlow 图。这个过程保留了 1.x TensorFlow 基于图形的执行的所有优点:性能优化、远程执行以及轻松序列化、导出和部署的能力,同时增加了用简单 Python 表达程序的灵活性和易用性。
  4. 使用分发策略进行分布式培训。对于大型 ML 训练任务,分发策略 API可以轻松地在不同硬件配置上分发和训练模型,而无需更改模型定义。由于 TensorFlow 支持一系列硬件加速器,如 CPU、GPU 和 TPU,您可以将训练工作负载分配到单节点/多加速器以及多节点/多加速器配置,包括TPU Pod。尽管此 API 支持各种集群配置,但提供了用于在本地或云环境中的Kubernetes 集群上部署培训的模板。
  5. 导出到 SavedModel。TensorFlow 将 SavedModel 标准化为 TensorFlow Serving、TensorFlow Lite、TensorFlow.js、TensorFlow Hub 等的交换格式。

2. 在任何平台上的生产中进行稳健的模型部署

TensorFlow 一直提供直接的生产路径。无论是在服务器、边缘设备还是网络上,无论您使用什么语言或平台,TensorFlow 都可以让您轻松训练和部署模型。在 TensorFlow 2.0 中,我们通过标准化交换格式和对齐 API 来提高跨平台和组件的兼容性和奇偶性。

训练并保存模型后,您可以直接在应用程序中执行它或使用以下部署库之一提供服务:

  • TensorFlow Serving:一个 TensorFlow 库,允许通过 HTTP/REST 或 gRPC/Protocol 缓冲区提供模型。
  • TensorFlow Lite:TensorFlow 针对移动和嵌入式设备的轻量级解决方案提供了在 Android、iOS 和嵌入式系统(如 Raspberry Pi 和 Edge TPU)上部署模型的能力。
  • TensorFlow.js:允许在 JavaScript 环境中部署模型,例如通过 Node.js 在 Web 浏览器或服务器端。TensorFlow.js 还支持在 JavaScript 中定义模型并使用类似 Keras 的 API 在 Web 浏览器中直接进行训练。

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

3. 强大的研究实验

TensorFlow 可以轻松地将新想法从概念转化为代码,从模型到发布。TensorFlow 2.0 包含许多功能,可以在不牺牲速度或性能的情况下定义和训练最先进的模型:

  • Keras 功能 API和模型子类化 API:允许创建复杂的拓扑,包括使用残差层、自定义多输入/输出模型和命令式编写的前向传递。
  • tf.GradientTape自定义训练逻辑:使用和对梯度计算进行细粒度控制tf.custom_gradient。
  • 为了获得更大的灵活性和控制力,低级 TensorFlow API 始终可用,并与更高级别的抽象结合使用,以实现完全可定制的逻辑。

TensorFlow 2.0 带来了几项新增功能,允许研究人员和高级用户进行实验,使用Ragged Tensors 、TensorFlow Probability、Tensor2Tensor等丰富的扩展,等等。

除了这些功能之外,TensorFlow 还提供了用于轻松进行原型设计和调试的即时执行、分发策略 API 和 AutoGraph 以进行大规模训练,并支持TPU,使 TensorFlow 2.0 成为一个易于使用、可定制且高度可扩展的平台,用于执行最先进的技术ML 研究并将该研究转化为生产管道。

4. TensorFlow 1.x 和 2.0 之间的差异

自从我们第一次开源 TensorFlow 以来,已经有许多版本和 API 迭代。随着 ML 的快速发展,该平台得到了巨大的发展,现在支持具有多样化需求的多样化用户组合。借助 TensorFlow 2.0,我们有机会基于语义版本控制对平台进行清理和模块化。
以下是一些更大的变化:

  • 取消排队者以支持tf.data.
  • 删除图形集合。
  • 改变变量的处理方式。
  • API 符号的移动和重命名。

此外,tf.contrib 将从核心 TensorFlow 存储库和构建过程中删除。TensorFlow 的 contrib 模块已经超出了单个存储库中可以维护和支持的范围。较大的项目最好单独维护,而较小的扩展将升级到核心 TensorFlow 代码。已经成立了一个特殊兴趣小组 (SIG),以维护和进一步开发一些更重要的贡献项目。

4.1 兼容性和连续性

为了简化向 TensorFlow 2.0 的迁移,将有一个转换工具更新 TensorFlow 1.x Python 代码以使用与 TensorFlow 2.0 兼容的 API,或标记无法自动转换代码的情况。

并非所有更改都可以完全自动进行。例如,一些已弃用的 API 没有直接等效的 API。这就是我们引入 tensorflow.compat.v1 兼容性模块的原因,该模块保留了对完整 TensorFlow 1.x API(不包括 tf.contrib)的支持。该模块将在 TensorFlow 2.x 的整个生命周期内得到维护,并允许使用 TensorFlow 1.x 编写的代码保持功能。

此外,SavedModels 或存储的 GraphDefs 将向后兼容。使用 1.x 保存的 SavedModel 将在 2.x 中继续加载和执行。但是,2.0 中的更改意味着原始检查点中的变量名称可能会更改,因此无法保证使用 2.0 之前的检查点和已转换为 2.0 的代码。有关更多详细信息,请参阅Effective TensorFlow 2.0指南。

我们相信 TensorFlow 2.0 将为社区带来巨大的好处,并且我们已经投入了大量的精力来使转换尽可能容易。但是,我们也认识到迁移当前管道需要时间,我们非常关心社区当前对学习和使用 TensorFlow 的投资。我们将为最后一个 1.x 版本提供 12 个月的安全补丁,以便为我们现有的用户提供充足的时间来过渡并获得 TensorFlow 2.0 的所有好处。

5. TensorFlow 2.0 的时间表

TensorFlow 2.0 将于今年年初作为公共预览版提供。但为什么要等呢?您已经可以通过使用tf.keras和渴望执行、预打包模型和部署库来开发 TensorFlow 2.0 方式。分发策略 API 今天也已经部分可用。

我们对 TensorFlow 2.0 和即将到来的变化感到非常兴奋。TensorFlow 已经从一个用于深度学习的软件库发展成为适用于所有类型 ML 的整个生态系统。TensorFlow 2.0 将简单易用,适用于所有平台上的所有用户。

请考虑加入 TensorFlow 社区以了解最新信息并帮助所有人都可以使用机器学习!

参考

https://medium.com/tensorflow/whats-coming-in-tensorflow-2-0-d3663832e9b8

翻译: TensorFlow 2.0 中的新功能相关推荐

  1. .NET Core 3.0中的新功能和增强功能

    目录 介绍 主要变化 Windows桌面支持 本机可执行文件 JSON API 更好的垃​​圾收集器 性能改进 Docker增强 ARM64支持 物联网支持 密码学 与.NET Core 2.2的AP ...

  2. ML.NET 发布0.11版本:.NET中的机器学习,为TensorFlow和ONNX添加了新功能

    微软发布了其最新版本的机器学习框架:ML.NET 0.11带来了新功能和突破性变化. 新版本的机器学习开源框架为TensorFlow和ONNX添加了新功能,但也包括一些重大变化, 这也是发布RC版本之 ...

  3. 官方资源帖!手把手教你在TensorFlow 2.0中实现CycleGAN,推特上百赞

    铜灵 发自 凹非寺 量子位 出品| 公众号 QbitAI CycleGAN,一个可以将一张图像的特征迁移到另一张图像的酷算法,此前可以完成马变斑马.冬天变夏天.苹果变桔子等一颗赛艇的效果. 这行被顶会 ...

  4. Tensorflow 2.0的这些新设计,你适应好了吗?

    [新智元导读]几天前,Tensorflow刚度过自己的3岁生日,作为当前最受欢迎的机器学习框架,Tensorflow在这个宝座上已经盘踞了近三年.无论是成熟的Keras,还是风头正盛的pytorch, ...

  5. 标准化Keras:TensorFlow 2.0中的高级API指南

    TensorFlow正准备发布2.0版本 . 在本文中,我们希望预览TensorFlow的高级API标题的方向,并回答一些常见问题. Keras是一个非常受欢迎的高级API,用于构建和培训深度学习模型 ...

  6. Java平台,标准版Oracle JDK 9中的新功能

    Java平台,标准版 Oracle JDK 9中的新增功能 版本9 E77563-05 2017年9月 JDK 9中的新功能概述 Java Platform,Standard Edition 9是一个 ...

  7. bit1618c 功能简介_c 9中的新功能简介

    bit1618c 功能简介 With the upcoming release of .NET 5 - the release which unifies the .NET runtimes - Mi ...

  8. expressjs mp4_了解如何在ExpressJS 4.0中使用新路由器

    expressjs mp4 With the new ExpressJS 4.0 just being released last week, there are many changes that ...

  9. AndroidStudio3.0 下载使用新功能介绍

    谷歌2017发布会更新了挺多内容的,而且也发布了AndroidStudio3.0预览版,一些功能先睹为快.(英语一般,有些翻译不太好) 下载地址 https://developer.android.g ...

  10. TensorFlow 2.0中的tf.keras和Keras有何区别?为什么以后一定要用tf.keras?

    选自pyimagesearch 作者:Adrian Rosebrock 参与:王子嘉.张倩 本文经机器之心授权转载,禁止二次转载 随着 TensorFlow 2.0 的发布,不少开发者产生了一些疑惑: ...

最新文章

  1. ASP .NET Core MVC 控制器中获取当前登录用户
  2. Matlab生成Xilinx Rom IP CORE的初始化内容coe文件
  3. 害怕抑郁症?该系统通过日常交流就能判断你是否有病
  4. Android开发UI之Fragment-Tabbed Activity的使用
  5. Exchange 2010 数据库副本加载后复制状态一直是失败并搁置故障分析
  6. 陈敏敏-130242014024-实验一
  7. 小心SAP环境中的8大安全错误!快来对照、改正!
  8. 你有程序员朋友吗?告诉他,100 万等他来拿
  9. 20复变函数的积分(六)
  10. 【Javascript Demo】图片瀑布流实现
  11. 指标公式c语言源码下载,通达信超级厉害指标公式源码附图-通达信公式-公式指标网...
  12. 硅谷课堂第十二课-公众号点播课程和直播管理模块
  13. 计算机测色的基本原理,计算机测色和配色.doc
  14. VS2005中UNICODE和ANSI以及MBCS的问题
  15. BA-协议-BACnet 协议优势简析
  16. react 中子路由(route)或二级路由如何配置?
  17. 一个机器人教小八_哈工程学生研发的水下机器人“敖小八”亮相浙江卫视
  18. 【HTML 教程系列第 14 篇】什么是 HTML 中的有序列表 ol
  19. hook ZwQuerySystemInformation 隐藏进程
  20. ora-00604 ora-02429

热门文章

  1. c语言单分支编程题,C语言习题集(分支和选择).doc
  2. 计算机二级java应用题怎么答,2015年计算机二级考试JAVA基本操作和简单应用题
  3. css选择器总结(内附实例及截图)
  4. iframe页面相互调用方法
  5. 利用python进行数据加载和存储
  6. p2093 [国家集训队]JZPFAR
  7. 负载均衡之LVS详解
  8. 改变form里面input,textarea.select等的默认样式
  9. weblogic 启动 startWebLogic.sh
  10. Android开发之SDCardUtils工具类。java工具详细代码,附源代码。判断SD卡是否挂载等功能...