0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TensorFlow 2.0中关于Keras的一些新功能和重大变化

电子工程师 来源:lq 2018-12-12 09:55 次阅读

【导语】早在今年 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 版本发布在即。我们会先解答下大家比较关注的几个问题,然后我们会介绍 TensorFlow2.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 特定的增强功能,包括支持EagerExecution,方便直观调试和快速迭代,支持 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 和EagerExecution 焦点变化带来的的影响将是微乎其微的。我们可能会更改 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 为项目作出贡献。感谢大家!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8453

    浏览量

    133167
  • tensorflow
    +关注

    关注

    13

    文章

    329

    浏览量

    60664
  • keras
    +关注

    关注

    2

    文章

    20

    浏览量

    6102

原文标题:TensorFlow 2.0发布在即,高级API变化抢先看

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    TensorFlow常用Python扩展包

    TensorFlow 能够实现大部分神经网络的功能。但是,这还是不够的。对于预处理任务、序列化甚至绘图任务,还需要更多的 Python 包。下面列出了一些常用的 Python 包:Numpy:这是用
    发表于 07-28 14:35

    TensorFlow的特点和基本的操作方式

    2015年11月在GitHub上开源,在2016年4月补充了分布式版本,最新版本为1.10,2018年下半年将发布Tensorflow 2.0预览版。Tensorflow目前仍处于快速开发迭代
    发表于 11-23 09:56

    keras可视化介绍

    keras的model.summary()方法 对于一些简单的模型,可以直接使用keras提供的model.summary()方法,如上讲的mnist模型,代码
    发表于 08-18 07:53

    Keras搭建神经网络的般步骤

    是: Keras 是为人类而不是为机器设计的 API,它把用户体验放在首要和中心位置,能够以最短时间把你的想法转换为实验结果。 这列文档主要讲述keras一些入门知识,
    发表于 08-18 07:35

    介绍OVN新功能

    本文档主要是关于2017年8月底发布的Open vSwitch 2.8添加的内容,重点介绍OVN新功能。同时也涵盖了即将在2018年2月发布的Open vSwitch和OVN 2
    发表于 03-06 10:05 2240次阅读

    TensorFlow2.0 版本将来临

    TensorFlow 的 contrib 模块已经超越了单个存储库可以维护和支持的模块。较大的项目最好分开维护,我们将在 TensorFlow 的主代码里添加一些规模较小的扩展。因此
    的头像 发表于 08-15 09:01 5557次阅读

    KerasTensorFlow究竟哪个会更好?

    Keras 依然作为个库,与 TensorFlow 分开,进行独立操作,所以仍存在未来两者会分开的可能性;然而,我们知道 Google 官方同时支持 Keras
    的头像 发表于 10-11 10:05 2.2w次阅读

    TensorFlowKeras哪个更好用?

    作为个库,Keras 仍然可以单独使用,因此未来两者可能会分道扬镳。不过,因为谷歌官方支持 KerasTensorFlow,所以似乎不太可能出现这种情况。
    的头像 发表于 10-31 09:40 1.1w次阅读

    深入了解TensorFlow随附的此版Keras将能为您实现哪些功能

    TensorFlow 开发者的经验水平千差万别,既有首次学习机器学习的学生,也有机器学习专家和研究人员。恰巧,TensorFlow 的优点之便是能提供多个 API 以支持不同的工作流程和目标。而这
    的头像 发表于 12-18 13:38 2895次阅读

    TensorFlow 2.0 alpha提供即将发生的变化的预览

    。Alpha 版文档的每个教程均会自动下载并安装 TensorFlow 2.0 Alpha 版,并且后续将提供更多内容!
    的头像 发表于 03-10 10:17 2989次阅读

    最新tf.keras指南,TensorFlow官方出品

    TensorFlow 1.x以静态图为主,网上主流的TF代码编写主要是面向过程的(函数为主),在引入tf.keras之后,TensorFlow官方就开始推荐tf.keras里各种面向对
    的头像 发表于 03-29 11:28 4322次阅读

    2020年航空业将会发生哪些重大变化

    不过,随着航空业对陈旧的空中交通管制系统进行现代化改造,2020年机场延误可能会有一些缓解。以下是我们将在2020年看到的一些重大变化
    发表于 01-03 11:33 1331次阅读

    TensorFlow主题演讲涉及的一些更新总结

    Google 开发者 Youku 频道上找到所有主题演讲的视频。以下是按产品领域列出的一些更新摘要(视频还有更多产品更新要点,请务必查看)。 移动版和网站版 TensorFlow
    的头像 发表于 05-28 14:19 1903次阅读

    基于TensorFlowKeras的图像识别

    ,让我们先花点时间来了解一些术语。TensorFlow/KerasTensorFlow是GoogleBrain团队创建的个Python开源库,它包含许多算法和模型
    的头像 发表于 01-13 08:27 913次阅读
    基于<b class='flag-5'>TensorFlow</b>和<b class='flag-5'>Keras</b>的图像识别

    keras模型转tensorflow session

    在这篇文章,我们将讨论如何将Keras模型转换为TensorFlow session。 KerasTensorFlow简介
    的头像 发表于 07-05 09:36 612次阅读