作者 | Sandeep Gupta, Josh Gordon, and Karmel Allison

整理 | 非主流、Jane

出品 | AI科技大本营

【导语】早在今年 8 月的时候,谷歌开源战略师 Edd Wilder-James 在一封公开邮件中表示正在研发 TensorFlow 2.0,并将于今年晚些时候发布预览版。在 2018 年最后半个月的日子里,我们就要迎来了新版本的发布。

在之前的公开邮件中,Edd Wilder-James 曾提到过一些 TensorFlow 2.0 的设计思想和重大改变:易用性将成为重点、Eager Execution 将会是核心功能、支持更多的平台和语言等。

而且未来所有的 tf.contrib 都会被弃用,对于每个 contrib 模块,要么 a)将项目集成到 TensorFlow 中;b)将其移至单独的存储库;c)完全将其移除。

在这篇文章中,我们将预览 TensorFlow 中高级 API 的未来方向,并回答大家常问的一些问题。

Keras 是广受开发者社区欢迎的高级 API,主要用于构建和训练深度学习模型。它可以用于快速原型设计、最先进的研究以及实际生产。虽然 TensorFlow 已经支持 Keras,但是 2.0 版本将实现更加紧密的集成。

Keras有以下几大关键优点:用户友好、模块化、可组合、容易扩展,既适合新手,也适合专家。这些优点加起来。可以让学习、研究、开发、部署的工作流更加容易,效率更高。通过将 Keras 构建为 TensorFlow 的高级 API,机器学习领域的新手可以更容易上手。通过单一的高级 API 可以减少混淆,让我们能够专注于为研究人员提供高级功能。

TensorFlow 2.0 版本发布在即。我们会先解答下大家比较关注的几个问题,然后我们会介绍 TensorFlow 2.0 中关于Keras 的一些新功能和重大变化,如Sequential API、Functional API、Model Subclassing API 与 Estimators 等。

FAQ

1、问:Keras 是否是一个独立的库?

答:其实,更应该把 Keras 视为一个 API。Keras 一直作为一个开源项目进行维护,大家可以在 (www.keras.io.)中找到。这个项目一直独立于 TensorFlow,并且拥有一个活跃的贡献者社区和用户社区。在 tf.keras 模块里,TensorFlow 有一个特定增强功能的完整 Keras API 实现。

2、问:Keras 只是 TensorFlow 或其他库的一个包装器吗?

答:不,这是一个常见的(但可以理解的)错误观念。 Keras 用于定义和训练机器学习模型的 API 标准,它与特定实现无关:除了 TensorFlow,Keras API 还可以用于 MXNet,TypeScript,JavaScript,CNTK,Theano,PlaidML,Scala,CoreML 和其他库的实现。

3、问:TensorFlow 内置的 Keras 版本与 keras.io 上的版本有什么区别?

答:TensorFlow 包含 Keras API(在 tf.kerasmodule 中)的实现,具有 TensorFlow 特定的增强功能,包括支持 Eager Execution,方便直观调试和快速迭代,支持 TensorFlow SavedModel模型交换格式,以及分布式训练(包括 TPU)。

当用到 tf.keras 模块的子类 API 时,Eager Execution 特别有用。这类 API 受到 Chainer 的启发,大家通过命令行就可以编写模型。tf.keras 与 TensorFlow 的生态系统紧密结合,可以支持:

  • tf.data 用于构建高性能的输入流。你可以用 Numpy 处理的数据来训练模型,或者用 tf.data 来衡量规模和性能。

  • 分布策略。在跨各种计算平台时进行分布式训练,包括分布在很多机器上的 GPU 和 TPU。

  • 输出模型。通过 tf.keras APIs 创建的模型可以在 TensorFlow SavedModel 格式下进行序列化,并且可以使用 TensorFlow Serving 或通过其他语言(Java、Go、Rust、C#等)进行绑定。

  • 模型可以使用 TensorFlow Lite 部署在移动或嵌入式设备上,也可以使用 TensorFlow.js。(也可以使用与此相同的 Keras API 直接在 JavaScript 中开发模型。)

  • 特征列,用于有效地表示和分类结构化数据。

如何安装 tf.keras?我是否需要先通过 pip 安装 Keras ?

因为 tf.keras 是包含在 TensorFlow 内的,所以,大家不用单独安装 Keras。如果在 Colab 中你可以直接运行下面的代码:

然后你就可以使用 tf.keras 了。如果你是安装新手,可以通过近期教程中的一些例子来检查是否导入成功。

5、TensorFlow 为专家和新手提供了不同 API,如何使用?

TensorFlow 的开发者们经验、层次都不同,有刚接触 ML 的学生们、也有 ML 领域的专家或研究者。而 TensorFlow 的一个优点就是它提供了不同的 APIs 支持不同的工作流和目标。这也是 TensorFlow 的 Keras 集成的一个主要目标,可以让用户选择对自己更有益处的部分,而无需采用 Keras 的整体框架。

Sequential API

如果你正在学习机器学习,我们 建议你从 tf.keras Sequential API 开始,它非常直观、简洁,适用于机器学习中 95% 的问题。使用这个 API,10 行代码就能搭建一个神经网络。

参考案例:

https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/_index.ipynb

定义模型的最常用方法是构建神经网络的层图,最简单的模型类型是把这些层堆叠起来。 你可以使用 Sequential API 来定义这样的模型,如下所示:

在 “Learn and UseML”章节下面,你可以找到更多使用 the Sequential API 的教程,参考链接:

https://www.tensorflow.org/tutorials/

Functional API

当然,顺序模型是一个简单的神经网络层堆栈,不能代表任何模型。不过,你可以使用 Functional API 来构建更高级的模型,定义复杂的拓扑结构,包括多输入和多输出模型,具有共享层的模型以及具有残差连接的模型。

使用 Functional API 构建模型时,神经层是可调用的,并可以返回张量作为输出。然后可以使用这些输入张量和输出张量来定义模型。 例如:

上面的模型同样可以使用简单的代码来进行编译和训练。

Model Subclassing API

如果你想搭建完全可自定义的模型,那么可以使用 Model Subclassing API。在类方法(class method)的主体中,你必须以这种方式定义前向传播。

这样的模型更灵活,但是也更难调试。所有这三种类型的模型三种类型的模型都可以使用前面显示的简单编译和调整命令来编译和训练,或者你可以编写自己的定制训练循环来实现完全控制。

例如:

更多 the Model Subclassing 的案例,可以在“research and experimentation”章节中查看教程,参考链接:

https://www.tensorflow.org/tutorials/

使用 the Model Subclassing API 实现的 Neural Machine Translation with Attention

使用 the Model Subclassing API实现的 GAN

如果这些模型都无法满足你的研究?

  • 如果你发现 tf.keras 限制了你的应用领域,你还有其他选择:

使用独立于 Keras 模型定义的 tf.keras 神经层,并编写自己的梯度和训练代码。类似地,你可以单独使用tf.keras.optimizers,tf.keras.initializers,tf.keras.losses或tf.keras.metrics。

  • 同时,你也可以完全忽略 tf.keras,使用较低层级的 TensorFlow,Python 和 AutoGraph 来获得你想要的结果。

这完全取决于你!请注意,tf.layers 中的非面向对象层将被弃用,tf.contribution(包括高级API,如 tf.contribution.slim 和 tf.contribution.learn)在 TF 2.0 中将不可用。

Estimators会发生哪些变化?

Estimator 在 Google 和 TensorFlow 社区的应用都十分广泛。 我们已经将几种模型打包为 Premade Estimators,包括线性分类器,DNN 分类器,组合 DNN 线性分类器(又名 宽深模型)和梯度增强树。 这些模型已经投入生产并得到广泛部署,由于这些原因,包括 Premade Estimators 在内的Estimator API 将包含在 TensorFlow 2.0 中。

对于 Premade Estimators 的用户来说,Keras 和 Eager Execution 焦点变化带来的的影响将是微乎其微的。我们可能会更改 Premade Estimators 的实现,同时保持 API 的界面相同。我们还将努力添加作为 Premade Estimators 实现的模型的 Keras 版本,并扩展 Keras 以更好地满足大规模生产的要求。

也就是说,如果你正在开发自定义体系结构,那我们建议使用 tf.keras 来构建模型而不是Estimator。如果你正在构建需要用到 Estimators 的基础架构,那么可以使用model_to_estimator() 来转换模型,同时我们也努力确保Keras可以跨TensorFlow生态系统工作。

进击到TensorFlow 2.0!

希望大家可以和我们一样喜欢使用 tf.keras 。在接下来几个月的时间,TensorFlow 团队将关注于提升开发者们的体验。在我们的文档和教程里也将会体现这点。我们也期待您的想法和反馈,并通过 Github issues 和 PRs 为项目作出贡献。感谢大家!

社区资源:

https://www.tensorflow.org/community/

原文链接:

https://medium.com/tensorflow/standardizing-on-keras-guidance-on-high-level-apis-in-tensorflow-2-0-bad2b04c819a

本文为AI科技大本营原创文章,转载请联系微信1092722531。

公开课预告

文本分类

文本分类问题是企业在NLP领域中处理文本数据时经常会遇到的一个问题,很多时候,我们需要将文本信息进行分类,或提相关的接口以供外部进行文本上传,在针对于用户所上传的文档信息就需要进行文档内容的分类,那么针对于这个需求我们就需要使用到文本分类的相关模型和算法进行处理。本次演讲就是从这个角度入手,通过对比来阐述不同的算法、模型在实际的应用过程中的区别,以及在文本分类实践中所遇到的各种坑。

推荐阅读

  • 免费报名 | WPS专家教你文本分类在企业中的应用实践

  • 如何自学CS?

  • 招聘 | 年薪百万, 超多职位等你选! 技术为王的时代, We Want You !

  • 漫画:如何实现大整数相加?

  • 程序员沉迷 Bug 可以有多疯?

  • 调查 20500 名开发者发现,最流行的编程语言不是 Python 和 Java

  • Python的崛起,影响了80万程序员?真相...

TensorFlow 2.0发布在即,高级API变化抢先看相关推荐

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

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

  2. 鸿蒙os上海交大教授,等了两年,鸿蒙OS明天发布,十大特性抢先看!

    上周二,华为正式对外宣布,研发两年多的鸿蒙 OS 将于 6 月 2 号,也就是明晚八点正式发布. 华为表示,发布会上不仅会推出「华为WATCH 3.华为 MatePad Pro」等多款搭载鸿蒙 OS ...

  3. TensorFlow 2.0 发布以来,又有哪些最新进展?| AI ProCon 2020

    [导读]7 月 3-4 日,由 CSDN 主办的第三届 AI 开发者大会(AI ProCon 2020)在线上举行.本次大会有超万人报名参与,参与人群覆盖 50+ 领域.4000 家企业.其中有来自行 ...

  4. TensorFlow 2.0 发布以来,又有哪些最新进展?

    [导读]7 月 3-4 日,由 CSDN 主办的第三届 AI 开发者大会(AI ProCon 2020)在线上举行.本次大会有超万人报名参与,参与人群覆盖 50+ 领域.4000 家企业.其中有来自行 ...

  5. Android2.0 Release 1 Eclair API变化预览

    图:Google总部很有趣,很有意思.也很有纪念意义的Android版本更新标志 Android2.0 也发布有一段时间了,网上一搜索关于Android2.0的消息还真不少,为了响应与时俱进的思想,所 ...

  6. Surging1.0发布在即,.NET开发者们,你们还在等什么?

    开源,是近三十年来互联网经久不衰的话题.它不仅仅是一种技术分享的形态,更是一种开放,包容,互利共赢的互联网精神. 不到30年前,大神林纳德·托瓦兹,在赫尔辛基大学实验室里,开发出了第一个版本的linu ...

  7. Go+ Together!——Go+ 1.0 发布在即

    2021 年 10 月 15 日,历时 1 年多的打磨和耕耘后,Go+即将迎来全新的  1.0 版本. Go+ Together!Go+ 1.0 发布会暨 Go+ 开发者基金会启动仪式,将于10 月 ...

  8. s8 android 8.0变化,细数三星Galaxy S8升级安卓8.0系统后的那些变化,看完决定

    三星Galaxy S8大更新 日盼夜盼安卓总算8.0时代到来了,这次s8也总算迎来了安卓8.0版本的更新, 不过目前还是测试阶段,下面我们就来细数有那些变化吧 一,任务管理器点击右上角可以切换视图 二 ...

  9. WAIC2020开幕在即,第四范式亮点抢先看

    以"智联世界,共同家园"为主题的2020世界人工智能大会云端峰会将于明天正式开幕,本届大会以在线展览及直播论坛为核心,展示最前沿的新技术.新产品.新应用:汇集最权威的新观点.新理念 ...

最新文章

  1. 基于Matlab的BP神经网络在非线性函数拟合中的应用
  2. 将会改变未来IT世界的十种编程语言
  3. TestNG如何用命令行运行
  4. Yum编译安装Error Downloading Packages报错
  5. Django从理论到实战(part37)--关于迁移
  6. 热点事件发现、演化及时间线Timeline、故事线Storyline自动生成
  7. 由Java说起:编程语言还需要开源吗?
  8. 静默错误:为什么看了那么多灾难,还是过不好备份这一关?
  9. 无人驾驶(大安全概念)
  10. oracle mysql认证考试流程_报考oraclemysql认证考试流程
  11. python实现matlab_python 实现matlab的mapminmax方法
  12. C# Halcon 图像放大缩小代码
  13. Unity HDRP室外场景打光流程分享(下篇)-白天和夜晚场景打光
  14. 利用FRP跨局域网操纵虚拟机集群
  15. 操作系统-复习-考题预测及解析-期中考试
  16. HX8110A功放IC大功率功放芯片
  17. STC 51单片机43——看门狗
  18. 视频教程- 项目管理工具(1) WBS-工作分解结构-研发管理
  19. AT对峙,不止百度出局那么简单
  20. Spring Cloud Task 主要是干什么的啊?跟 Quartz 和 Spring Task 有啥关系?

热门文章

  1. 如何读取多个文件,文件后缀名不一致,不过类似source.1 source.2 source.3等
  2. 关于Iframe之间以及与父窗体的值传递
  3. java lamdba表达式效率_java8新特性Lambda表达式为什么运行效率低
  4. 新能源汽车电驱系统行业深度报告
  5. c语言逐步搜索法求有根区间,[C语言第五章.ppt
  6. 03 Django REST Framework 视图和路由
  7. useradd与adduser的区别
  8. C#计算两个日期的相隔天数
  9. 文件解析库doctotext源码分析
  10. delphi对窗体的查询(delphi xe2)