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

    文章

    8061

    浏览量

    130439
  • tensorflow
    +关注

    关注

    13

    文章

    313

    浏览量

    60232
  • keras
    +关注

    关注

    2

    文章

    18

    浏览量

    6035

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

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

收藏 人收藏

    评论

    相关推荐

    TensorFlow是什么

    更长。TensorFlow 使这切变得更加简单快捷,从而缩短了想法到部署之间的实现时间。在本教程,你将学习如何利用 TensorFlow功能
    发表于 07-22 10:14

    TensorFlow常用Python扩展包

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

    请问Python3.9的新功能是什么?

    3.9 的完整版本。一些新功能令人难以置信,看到Python 3.9 在发布后会被使用。我们将看到以下新功能,即字典联合运算符、类型提示、两种新的字符串方法、新的Python解析器 。下面让我们首先看
    发表于 09-02 18:55

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

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

    RK3399Pro入门教程(4)从Tensorflow.Keras到RKNN

    tensorflow直保留着他们自己的pb模型格式文件(配置+权重)。我们直接从Tensorflow官网首页的教程Mnist入手,大概简单说明下如何从Tensorflow.Keras
    发表于 03-31 16:23

    keras可视化介绍

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

    Keras搭建神经网络的般步骤

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

    KerasTensorFlow究竟哪个会更好?

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

    TensorFlowKeras哪个更好用?

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

    机器学习框架Tensorflow 2.0的这些新设计你了解多少

    几天前,Tensorflow刚度过自己的3岁生日,作为当前最受欢迎的机器学习框架,Tensorflow在这个宝座上已经盘踞了近三年。无论是成熟的Keras,还是风头正盛的pytorch,它的地位似乎
    的头像 发表于 11-17 11:33 2983次阅读

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

    也是 TensorFlow 集成 Keras 的主要设计目标,即让用户能够选择对自己更有用处的 Keras 组件,而无需采用整个框架。
    的头像 发表于 12-18 13:38 2582次阅读

    TensorFlow 2.0有什么样的新功能

    TensorFlow 已经发展为世界上最受欢迎和被广泛采用的机器学习平台之一,我们衷心感谢一直以来支持我们的各界的开发者和他们的贡献:
    的头像 发表于 02-03 11:50 1960次阅读
    <b class='flag-5'>TensorFlow</b> <b class='flag-5'>2.0</b>有什么样的<b class='flag-5'>新功能</b>

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

    要快速上手 TensorFlow 2.0 Alpha 版,最佳途径是前往 TensorFlow 的新网站。您可以在 tensorflow.org/alpha 上找到 Alpha 版的教
    的头像 发表于 03-10 10:17 2730次阅读

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

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

    基于TensorFlowKeras的图像识别

    TensorFlowKeras最常见的用途之一是图像识别/分类。通过本文,您将了解如何使用Keras达到这一目的。定义如果您不了解图像识别的基本概念,将很难完全理解本文的内容。因此在正文开始之前
    的头像 发表于 01-13 08:27 340次阅读
    基于<b class='flag-5'>TensorFlow</b>和<b class='flag-5'>Keras</b>的图像识别