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

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

3天内不再提示

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

Tensorflowers 来源:lq 2018-12-18 13:38 次阅读

TensorFlow 正准备发布 2.0 版。本文中,我们将会预览 TensorFlow 高级 API 的发展方向,并解答一些常见问题。

Keras是一个颇受欢迎的高级 API,专用于构建和训练深度学习模型。此 API 可用于快速原型设计、顶尖研究与实际生产。TensorFlow 现已支持 Keras,但在 2.0 版中,我们正致力将 Keras 更紧密地集成至 TensorFlow 平台的其余组件。

通过将 Keras 打造为 TensorFlow 的高级 API,我们旨在帮助机器学习新手开发者们更轻松地开启 TensorFlow 入门之旅。单个高级 API 可减少混淆,使我们更加专注于为研究人员提供高级功能。

我们希望您能像我们一样,尽情享受此款 API 的使用体验!

Keras 具备以下几项关键优势:

人性化:Keras 界面简单、一致,已针对常见用例进行优化。Keras 能够就用户错误提供清晰且可处理的反馈,不仅便于用户了解错误消息,而且通常还能提供实用建议。

模块化与可组合性:Keras 模型由可配置的构建基块相连组合而成,几乎不存在任何限制。Keras 的部分组件可重复利用,用户将无需采用甚至了解框架提供的全部内容。例如,您无需通过 Keras 模型开展训练便可使用层或优化器。

易于扩展:您可以通过编写自定义构建基块来展现新的研究思路,包括构建新层、损失函数以及 [在此处插入您的想法] 以开发顶尖创意

初学者和专家通用:深度学习开发者背景不同、经验水平各异,而无论您是刚刚入门,还是拥有多年经验,Keras 均可提供切合您需求的 API。

综上所述,无论是学习机器学习、研究、应用开发抑或部署,Keras 均能在各类用例中简化工作流程并提高工作效率。

首先,我们会解答现已提出的几个问题。其次,我们将深入了解 TensorFlow 随附的此版 Keras 将能为您实现哪些功能。

常见问题解答

Keras 是否为一个独立的库?

其实,更应将 Keras 视为一种 API 规范。Keras 的参考实现一直作为独立的开放源代码项目进行维护,具体可于此网站找到:www.keras.io。该项目独立于 TensorFlow,并拥有一个活跃的贡献者与用户社区。TensorFlow 包括 Keras API 的完整实现(位于tf.keras 模块),且此 API 具备针对 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模块),且此 API 具备针对 TensorFlow 的增强功能。这些功能包括:支持Eager Execution以便进行直观调试和快速迭代、支持 TensorFlow SavedModel 模型交换格式,以及为分布式训练(包括 TPU 上的训练)提供集成支持。

在使用 tf.kerasModel SubclassingAPI 时,Eager Execution 功能尤为有用。此 API 是受Chainer的启发开发而成,可让您命令式地编写模型的正向传递。tf.keras 紧密集成于 TensorFlow 生态系统,同时也支持:

tf.data:可助您构建高性能输入管道。若您有意尝试,则可使用 NumPy 格式的数据训练模型,或使用 tf.data 来扩大规模和提升性能。

分布策略:该策略用于在各类计算配置中开展分布式训练,包括遍布于众多机器上的 GPU 和 TPU。

导出模型:利用 tf.keras API 创建的模型能够以 TensorFlowSavedModel格式进行序列化,并能借助TensorFlow Serving或通过其他语言绑定(Java、Go、Rust、C# 等)提供给用户使用。

导出的模型可通过TensorFlow Lite部署至移动和嵌入式设备,同时也适用于TensorFlow.js(注意:您也可使用同样常见的 Keras API 直接在 JavaScript 中开发模型)。

特征列:用于有效表示及分类结构化数据。

此外,tf.keras 还可支持其他正在开发的内容。

如何安装 tf.keras?是否还需通过 pip 安装 Keras?

tf.keras 内附于 TensorFlow 中。您无需单独安装 Keras。例如,您可以在Colab笔记本中运行如下代码:

!pip install tensorflowimport tensorflow as tfDense = tf.keras.layers.Dense

现在您已能使用 tf.keras。如果您不熟悉如何导入,可以查看近期发布的部分 教程 获取示例(https://www.tensorflow.org/tutorials/)。

您提到 TensorFlow 可为初学者和专家提供不同的 API 模式。这些模式看起来如何?

TensorFlow 开发者的经验水平千差万别,既有首次学习机器学习的学生,也有机器学习专家和研究人员。恰巧,TensorFlow 的优点之一便是能提供多个 API 以支持不同的工作流程和目标。而这也是 TensorFlow 集成 Keras 的主要设计目标,即让用户能够选择对自己更有用处的 Keras 组件,而无需采用整个框架。

Sequential API

如果您正在学习机器学习,建议您先从 tf.kerasSequential API开始。该款 API 直观、简洁,且适用于实践中 95% 的机器学习问题。如果使用此 API,您大约只需 10 行代码便可编写出首个神经网络

通过几行代码训练首个神经网络的示例(https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/_index.ipynb)

最常见的模型定义方法是构建层图,这与我们在深度学习中通常使用的心智模式相对应。最简单的模型类型是层堆栈。您可以使用 Sequential API 定义此类模型,如下所示:

model = tf.keras.Sequential()model.add(layers.Dense(64, activation=’relu’))model.add(layers.Dense(64, activation=’relu’))model.add(layers.Dense(10, activation=’softmax’))Such a model can then be compiled and trained in a few lines:model.compile(optimizer=’adam’, loss=’sparse_categorical_crossentropy’, metrics=[‘accuracy’])model.fit(x_train, y_train, epochs=5)model.evaluate(x_test, y_test)

您可以在 “学习和使用机器学习” 部分找到更多使用 Sequential API 的示例,(参考链接:tensorflow.org/tutorials)。

获取教程,了解如何使用 Sequential API 在 Fashion MNIST 数据集上训练首个神经网络(https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/keras/basic_classification.ipynb)

Functional API

当然,序贯模型只是简单的层堆栈,并不能表示任意模型。您可使用Functional API构建更高级的模型,此 API 可帮助您定义复杂的拓扑结构,包括多输入和多输出模型、共享层模型以及采用残差连接的模型。

使用 Functional API 构建模型时,层可供调用(在张量上),还可返回张量以作为输出。这些输入和输出张量可用于定义模型。例如:

inputs = tf.keras.Input(shape=(32,))# A layer instance is callable on a tensor, and returns a tensor.x = layers.Dense(64, activation=’relu’)(inputs)x = layers.Dense(64, activation=’relu’)(x)predictions = layers.Dense(10, activation=’softmax’)(x)# Instantiate the model given inputs and outputs.model = tf.keras.Model(inputs=inputs, outputs=predictions)

此类模型也可使用以上同种简单命令进行编译和训练。您可在此处 (https://www.tensorflow.org/guide/keras#functional_api)了解有关 Functional API 的更多内容。

Model Subclassing API

可使用Model Subclassing API构建可完全自定义的模型。在类方法主体中,您可采用此模式命令式地定义正向传递。例如:

class MyModel(tf.keras.Model):

def __init__(self): super(MyModel, self).__init__() # Define your layers here. self.dense_1 = layers.Dense(32, activation=’relu’) self.dense_2 = layers.Dense(num_classes, activation=’sigmoid’)

def call(self, inputs): # Define your forward pass here, # using layers you previously defined in `__init__` x = self.dense_1(inputs) return self.dense_2(x)

此类模型更加灵活,但也更难调试。这三类模型均可使用简单的编译与调整命令(如前文所示)进行编译和训练,您也可自行编写自定义训练循环,以实现完全控制。

例如:

model = MyModel()

with tf.GradientTape() as tape: logits = model(images, training=True) loss_value = loss(logits, labels)

grads = tape.gradient(loss_value, model.variables)optimizer.apply_gradients(zip(grads, model.variables))

如需 Model Subclassing 模式的更多相关示例,请查看下方链接或访问tensorflow.org/tutorials(参阅 “研究与实验” 部分)。

通过 Model Subclassing API 实现的基于注意力机制的神经机器翻译

通过 Model Subclassing API 实现的GAN(https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/python/examples/generative_examples/dcgan.ipynb)

如果以上三种模式均不适用我的研究,该怎么办?

如果您发现 tf.keras 不适用于自身应用领域,我们还提供其他多种途径。您可以:

单独使用 Keras 模型定义中的 tf.keras.layers,然后自行编写梯度和训练代码。您还可单独或独立使用 tf.keras.optimizers、tf.keras.initializers、tf.keras.losses 或 tf.keras.metrics。

此外,您也可完全忽略 tf.keras,并使用较低层级的 TensorFlow、Python 和AutoGraph获取您期望的结果。

这完全由您决定!请注意,tf.layers 中的非面向对象层将被弃用,且 tf.contrib.*(包括 tf.contrib.slim 和 tf.contrib.learn 等高级 API)将无法在 TensorFlow 2.0 中使用。

Estimator 有何变化?

Estimator在 Google 内部以及更广泛的 TensorFlow 社区中应用甚广。我们已将数种模型打包为预创建的 Estimator,包括线性分类器、DNN 分类器、DNN 线性组合分类器(亦即广度与深度模型)和梯度提升树。这些模型已投入生产并得到广泛部署;基于此,TensorFlow 2.0 中将会添加 Estimator API(包括预创建的 Estimator)。

对于使用预创建 Estimator 的用户而言,新版中重点开发的 Keras 和 Eager Execution 对其产生的影响微乎其微。我们可以更改预创建 Estimator 的实现方式,但会保持 API 界面不变。我们还将继续添加作为预创建 Estimator 实现的模型的 Keras 版本,同时还会扩展 Keras,以更好地满足大规模生产需求。

换言之,如果您在开发自定义架构,我们建议您使用 tf.keras 而非 Estimator 来构建模型。如果您在构建需要借助 Estimator 的基础架构,则可通过model_to_estimator()来转换模型,而我们会努力确保 Keras 在整个 TensorFlow 生态系统中顺利运行。

向 TensorFlow 2.0 进军!

我们希望您能像我们一样,尽情享受 tf.keras 的使用体验!未来数月内,TensorFlow 团队将专注提升开发者的使用体验。在此期间,我们会提供相关文档和教程。我们期待您分享看法和反馈,并通过 GitHub Issue 和 PR 为项目作出贡献。感谢大家!

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

    关注

    73

    文章

    5492

    浏览量

    120964
  • tensorflow
    +关注

    关注

    13

    文章

    328

    浏览量

    60494
  • keras
    +关注

    关注

    2

    文章

    20

    浏览量

    6079

原文标题:标准化 Keras:TensorFlow 2.0 高级 API 指南

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

收藏 人收藏

    评论

    相关推荐

    深入了解示波器

    深入了解示波器
    发表于 11-14 22:32

    深入了解LabVIEW FPGA资料分享

    深入了解LabVIEW FPGA
    发表于 05-27 08:35

    示波器的深入了解

    示波器的深入了解 引言自然界运行着各种形式的正弦波,比如海浪、地震、声波、爆破、空气中传播的声音,或者身体运转的自然节律。物理世界里,能
    发表于 11-04 11:53 52次下载
    示波器的<b class='flag-5'>深入了解</b>

    深入了解示波器入门手册

    深入了解示波器入门手册
    发表于 03-27 17:43 241次下载
    <b class='flag-5'>深入了解</b>示波器入门手册

    深入了解电感与磁珠的异同

    模拟电子的相关知识学习教材资料——深入了解电感与磁珠的异同
    发表于 09-27 15:19 0次下载

    KerasTensorFlow究竟哪个会更好?

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

    TensorFlowKeras哪个更好用?

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

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

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

    深入了解Android Studio的最新功能

    的应用。接下来,我们将会为详细介绍此版本的代表功能与改进,并带一窥我们为未来版本的 Android Studio 所开发的最新功能
    的头像 发表于 01-25 11:27 2613次阅读
    <b class='flag-5'>深入了解</b>Android Studio的最新<b class='flag-5'>功能</b>

    带你深入了解示波器

    带你深入了解示波器
    发表于 02-07 14:26 19次下载

    深入了解电动牙刷的构造及原理

    电动牙刷作为一款便捷、时尚的消费电子产品,深得很多用户的喜爱。知道电动牙刷是怎么工作的吗?它里面有用到哪些分立器件产品?本文带深入了解电动牙刷的构造及原理。
    发表于 06-05 11:51 2535次阅读
    <b class='flag-5'>深入了解</b>电动牙刷的构造及原理

    深入了解安全光栅

    深入了解安全光栅
    的头像 发表于 06-25 13:53 1160次阅读
    <b class='flag-5'>深入了解</b>安全光栅

    深入了解 GaN 技术

    深入了解 GaN 技术
    的头像 发表于 12-06 17:28 6056次阅读
    <b class='flag-5'>深入了解</b> GaN 技术

    基于TensorFlowKeras的图像识别

    TensorFlowKeras最常见的用途之一是图像识别/分类。通过本文,您将了解如何使用Keras达到这一目的。定义如果您不了解图像识别
    的头像 发表于 01-13 08:27 768次阅读
    基于<b class='flag-5'>TensorFlow</b>和<b class='flag-5'>Keras</b>的图像识别

    keras模型转tensorflow session

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