Keras的标准化:TensorFlow 2.0中的高级api指南

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:Tensorflow

编译:ronghuaiyang

导读

TensorFlow2.0马上就要来了,预览版已经放出。Keras作为TensorFlow的高级API,有什么样的发展和变换呢?一起来看看TensorFlow官方是怎么说的

TensorFlow正在准备2.0版本的发布。在本文中,我们希望预览TensorFlow的高级api的发展方向,并回答一些常见的问题。

Keras是一个非常流行的用于构建和训练深度学习模型的高级API。它被用于快速原型制作,最先进的研究和生产。虽然TensorFlow现在支持Keras 2.0,但我们正在将Keras更紧密地集成到TensorFlow平台的其他部分。

通过为TensorFlow建立Keras作为高级API,我们可以让刚接触机器学习的开发人员更容易地开始使用TensorFlow。单一的高级API减少了混淆,使我们能够集中精力为研究人员提供高级功能。

我们希望你能像我们一样喜欢使用它!

Keras有几个关键优势:

  • 用户友好:对于通常的情况下,Keras有一个简单的,一致的接口。它为用户出现的错误提供了清晰和可操作的反馈,错误消息非常容易理解,通常还提供了有用的建议。

  • 模块化和可组合性: Keras模型是通过将可配置的结构块连接在一起而形成的,几乎没有限制。部分Keras可以重用,不用修改,甚至可以不用了解框架的所有内容。例如,你可以在不使用Keras“模型”进行训练的情况下使用层或优化器。

  • 易于扩展:你可以编写自定义结构块来表达研究的新想法,包括新层、新损失函数来实现最先进的想法。

  • 适用于初学者和专家:深度学习开发人员来自不同的背景和经验级别,无论你是新手还是有多年经验的人,Keras都提供了有用的api。

总的来说,这些特性使得工作流程非常广泛的情况下(从学习ML到研究、应用程序开发和部署)中变得更容易、更高效。

首先,我们将回答几个出现的问题。接下来,我们将进一步了解TensorFlow附带的Keras版本允许您做什么。

FAQ

我以为Keras是一个独立的库?

最重要的是,Keras是一个API规范,它的一个参考实现是作为一个独立的开源项目来维护的,您可以在www.keras.io上找到它。这个项目独立于TensorFlow,并且有一个活跃的贡献者和用户社区。TensorFlow包含了一个完整的Keras API实现(在tf.keras模块中),具有TensorFlow特有的增强。

Keras仅仅是TensorFlow或其他库的包装器吗?

不,这是一个常见的(但可以理解的)误解。Keras是一个用于定义和训练机器学习模型的API标准。Keras没有绑定到特定的实现:Keras API有TensorFlow、MXNet、TypeScript、JavaScript、CNTK、Theano、PlaidML、Scala、CoreML和其他库的实现。

TensorFlow内置的Keras版本和我在Keras .io上找到的版本有什么不同?

TensorFlow包含一个Keras API的实现(在tf.keras模块中),具有TensorFlow特有的增强。这包括对eager execution的支持,用于直观的调试和快速迭代,对TensorFlow SavedModel模型交换格式的支持,以及对分布式训练(包括tpu上的训练)的集成支持。

在使用 tf.keras model subclassing API时,立即执行特别有用。这个API的灵感来自Chainer,它使您能够命令式地编写模型的前向传递。tf.keras与TensorFlow生态系统紧密结合,并支持:

  • tf.data,使您能够构建高性能的输入管道。如果您愿意,您可以使用NumPy格式的数据来训练您的模型,或者使用tf。用于规模和性能的数据。

  • 分布式策略,用于在各种各样的计算配置上分布训练,包括分布在许多机器上的gpu和tpu。

  • 导出模型。使用tf创建的模型。keras api可以序列化为TensorFlow SavedModel格式,并使用TensorFlow service或通过其他语言绑定(Java、Go、Rust、c#等)提供服务。

  • 导出的模型可以使用TensorFlow Lite部署在移动和嵌入式设备上,也可以使用TensorFlow.js(注:您也可以使用相同的Keras API直接用JavaScript开发模型)。

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

  • 更多的工作正在进行中。

我如何安装tf.keras?我还需要通过pip安装Keras吗?

tf.keras包含在TensorFlow中。您不需要单独安装Keras。例如,如果在Colab笔记本中运行:

 
 

现在你就可以使用tf.keras了,如果你是新手,可以查看最近的教程中的一些示例。

你提到TensorFlow为初学者和专家提供了不同的API样式。这些看起来怎么样?

TensorFlow开发人员有很多经验级别(从第一次学习ML的学生到ML专家和研究人员)。同样,TensorFlow的优点之一是它提供了几个api来支持不同的工作流和目标。类似地,这是TensorFlow的Keras集成的主要设计目标,用户可以在不采用整个框架的情况下选择他们更能从中受益的部分Keras。

序列API

如果你是学习ML的学生,我们建议您从tf开始学习。keras序列API,直观、简洁,适用于实践中95%的ML问题。使用这个API,你可以用大约10行代码编写你的第一个神经网络。

640?wx_fmt=png

定义模型最常见的方法是构建层图,它对应于我们在考虑深度学习时通常使用的模型。最简单的模型类型是层的堆叠。你可以使用序列API定义这样的模型,如下所示:

 
 

你可以在tensorflow.org/tutorials的“Learn and Use ML”一节找到更多的使用序列模型的例子。

640?wx_fmt=png

MNIST时尚数据集

函数API

当然,序列模型是简单的层的堆叠,不能表示任意的模型。可以使用Functional API构建更高级的模型,它使拟能够定义复杂的拓扑,包括多输入和多输出模型、具有共享层的模型以及具有残差连接的模型。

当使用函数API构建模型时,层是可调用的(在一个张量上),并返回一个张量作为输出。这些输入张量和输出张量可以用来定义一个模型。例如:

 
 

可以使用上面相同的简单命令编译和训练这样的模型。你可以在这里了解更多关于函数API的信息(https://www.tensorflow.org/guide/keras#functional_api)。

模型子类API

完全可定制的模型可以通过使用Model Subclassing API来构建,你可以在类方法的主体中以这种风格强制定义自己的前向传递。例如:

 
 

这些模型更加灵活,但是难于调试。可以使用前面显示的简单的compile和fit命令编译和训练这三种类型的模型,或者你可以编写自己的用于完全控制的自定义训练循环。

例如:

更多模型子类化风格的例子,看看下面的链接,或者访问tensorflow.org/tutorials(见“research and experimentation”一节)。

640?wx_fmt=png

Neural Machine Translation with Attention 使用模型子类化API实现

640?wx_fmt=png

使用模型子类化API实现的GAN

如果我的研究不使用其中一种风格怎么办?

如果你发现tf.keras在你的应用邻域的使用受到限制,你可以多个选择,你可以:

  • 将使用tf.keras层与Keras模型定义分开,编写自己的梯度和训练代码,你可以类似地独立使用tf.keras.optimizers, tf.keras.initializers, tf.keras.losses, or tf.keras.metrics。

  • 完全忽略tf.keras,使用低级的TensorFlow、Python和AutoGraph来获得你想要的结果。

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

Estimator会怎么样?

Estimators在谷歌和更广泛的TensorFlow社区中都得到了广泛的使用。一些模型被打包为预估器,包括线性分类器、DNN分类器、组合DNN线性分类器(Wide and Deep Models)和梯度提升树。这些模型已经可以投入生产并得到了广泛的部署,并且,由于所有这些原因,评估器api,包括预估器,将被包含在TensorFlow 2.0中。

对于使用预估器的用户,新的Keras关注点和即时执行的影响将是最小的。我们可以改变预估器的实现,同时保持API表面不变。我们还将致力于添加作为预估器实现的模型的Keras版本,我们将扩展Keras以更好地满足大规模生产需求。

也就是说,如果你正在处理自定义架构,我们建议使用tf.keras来构建你的模型而不是评估器。如果你正在使用需要估算器的基础设施,您可以使用model_to_estimator()转换你的模型,以确保Keras跨TensorFlow生态系统工作。

前进到TensorFlow 2.0!

我们希望你会和我们一样喜欢使用tf.keras,在接下来的几个月里,TensorFlow团队将专注于改善开发人员的体验。我们的文档和教程将反映这个。我们期待你的想法和反馈(请查看我们的社区资源),以及通过GitHub issues和PRs的贡献。谢谢大家!


640?wx_fmt=png— END—

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

640?wx_fmt=gif

人人都能看得懂的深度学习介绍!全篇没有一个数学符号!

深度学习物体检测论文阅读路线图以及官方实现

新手必看的Top10个机器学习算法(这些都学会了你就是老手了

更多历史文章请关注公众号,点击“历史文章”获取


640?wx_fmt=jpeg

请长按或扫描二维码关注本公众号

喜欢这篇文章的话,请给我个好看吧640?wx_fmt=gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值