c语言sscanf函数的用法是什么
276
2022-11-12
深入了解TensorFlow随附的此版Keras将能为您实现哪些功能
我们希望您能像我们一样,尽情享受此款 API 的使用体验!
Keras 具备以下几项关键优势:
人性化:Keras 界面简单、一致,已针对常见用例进行优化。Keras 能够就用户错误提供清晰且可处理的反馈,不仅便于用户了解错误消息,而且通常还能提供实用建议。
模块化与可组合性:Keras 模型由可配置的构建基块相连组合而成,几乎不存在任何限制。Keras 的部分组件可重复利用,用户将无需采用甚至了解框架提供的全部内容。例如,您无需通过 Keras 模型开展训练便可使用层或优化器。
易于扩展:您可以通过编写自定义构建基块来展现新的研究思路,包括构建新层、损失函数以及 [在此处插入您的想法] 以开发顶尖创意。
初学者和专家通用:深度学习开发者背景不同、经验水平各异,而无论您是刚刚入门,还是拥有多年经验,Keras 均可提供切合您需求的 API。
综上所述,无论是学习机器学习、研究、应用开发抑或部署,Keras 均能在各类用例中简化工作流程并提高工作效率。
首先,我们会解答现已提出的几个问题。其次,我们将深入了解 TensorFlow 随附的此版 Keras 将能为您实现哪些功能。
常见问题解答
Keras 是否为一个独立的库?
其实,更应将 Keras 视为一种 API 规范。Keras 的参考实现一直作为独立的开放源代码项目进行维护,具体可于此网站找到:keras.io。该项目独立于 TensorFlow,并拥有一个活跃的贡献者与用户社区。TensorFlow 包括 Keras API 的完整实现(位于tf.keras 模块),且此 API 具备针对 TensorFlow 的增强功能。
Keras 只是 TensorFlow 或其他库的包装器吗?
TensorFlow 内置的 Keras 版本与 keras.io 提供的版本有何不同?
在使用 tf.kerasModel SubclassingAPI 时,Eager Execution 功能尤为有用。此 API 是受Chainer的启发开发而成,可让您命令式地编写模型的正向传递。tf.keras 紧密集成于 TensorFlow 生态系统,同时也支持:
tf.data:可助您构建高性能输入管道。若您有意尝试,则可使用 NumPy 格式的数据训练模型,或使用 tf.data 来扩大规模和提升性能。
特征列:用于有效表示及分类结构化数据。
此外,tf.keras 还可支持其他正在开发的内容。
如何安装 tf.keras?是否还需通过 pip 安装 Keras?
tf.keras 内附于 TensorFlow 中。您无需单独安装 Keras。例如,您可以在Colab笔记本中运行如下代码:
您提到 TensorFlow 可为初学者和专家提供不同的 API 模式。这些模式看起来如何?
TensorFlow 开发者的经验水平千差万别,既有首次学习机器学习的学生,也有机器学习专家和研究人员。恰巧,TensorFlow 的优点之一便是能提供多个 API 以支持不同的工作流程和目标。而这也是 TensorFlow 集成 Keras 的主要设计目标,即让用户能够选择对自己更有用处的 Keras 组件,而无需采用整个框架。
Sequential API
最常见的模型定义方法是构建层图,这与我们在深度学习中通常使用的心智模式相对应。最简单的模型类型是层堆栈。您可以使用 Sequential API 定义此类模型,如下所示:
您可以在 “学习和使用机器学习” 部分找到更多使用 Sequential API 的示例,(参考链接:tensorflow.org/tutorials)。
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)
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 实现的基于注意力机制的神经机器翻译
如果以上三种模式均不适用我的研究,该怎么办?
如果您发现 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 为项目作出贡献。感谢大家!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~