Keras:TensorFlow 的高级 API#

Keras 是 TensorFlow 平台的高级 API。它提供了一个易于理解的高效接口,非常适合解决机器学习 (ML) 问题,重点关注现代深度学习。Keras 涵盖了机器学习工作流的每个步骤,从数据处理到超参数调优,再到部署。它的开发重点是实现快速实验。

借助 Keras,您可以完全利用 TensorFlow 的可扩缩性和跨平台能力。您可以在 TPU Pod 或大型 GPU 集群上运行 Keras,而且可以导出 Keras 模型以在浏览器中或移动设备上运行。此外,您还可以通过 Web API 提供 Keras 模型。

Keras 用于通过实现以下目标来减少认知负荷:

  • 提供简单一致的接口。

  • 最大限度减少常见用例所需的操作数量。

  • 提供清晰、可操作的错误消息。

  • 遵循逐步展示复杂性的原则:轻松上手,并且可以通过边用边学来完成高级工作流。

  • 帮助您编写简洁、易读的代码。

哪些人应当使用 Keras#

简而言之,每个 TensorFlow 用户都应当默认使用 Keras API。无论您是工程师、研究员还是 ML 从业者,都应该从 Keras 开始。

有一些用例(例如,在 TensorFlow 上构建工具或开发您自己的高性能平台)需要低级 TensorFlow Core API。但是,如果您的用例不属于 Core API 应用之一,您应该更愿意使用 Keras。

Keras API 组件#

Keras 的核心数据结构是模型。层是简单的输入/输出转换,模型是层的有向无环图 (DAG)。

#

tf.keras.layers.Layer 类是 Keras 中的基本抽象。Layer 封装了状态(权重)和一些计算(在 tf.keras.layers.Layer.call 方法中定义)。

由层创建的权重可以是可训练的,也可以是不可训练的。层支持以递归方式组合:如果将层实例分配为另一个层的特性,则外层将开始跟踪内层创建的权重。

您也可以使用层来处理数据预处理任务,如归一化和文本向量化。预处理层可以在训练期间或之后直接包含到模型中,这会使模型便于移植。

模型#

模型是将层分组在一起并且可以在数据上进行训练的对象。

最简单的模型类型是Sequential 模型,它是层的线性堆叠。对于更复杂的架构,可以使用 Keras 函数式 API(允许构建任意层的计算图),也可以使用子类化从头开始编写模型

tf.keras.Model 类具有内置的训练和评估方法:

  • tf.keras.Model.fit:将模型训练固定数量的周期。

  • tf.keras.Model.predict:生成输入样本的输出预测。

  • tf.keras.Model.evaluate:返回模型的损失和指标值; 通过 tf.keras.Model.compile 方法配置。

您可以利用这些方法访问以下内置训练功能:

  • 回调。您可以利用内置回调实现提前停止、模型检查点和 TensorBoard 监控。您还可以实现自定义回调

  • 分布式训练。您可以将训练轻松扩展到多个 GPU、TPU 或设备。

  • 步熔合。使用 tf.keras.Model.compile 中的 steps_per_execution 参数,您可以在单次 tf.function 调用中处理多个批次,从而显著提高 TPU 上的设备利用率。

有关如何使用 fit 的详细概述,请参阅训练和评估指南。要了解如何自定义内置训练和评估循环,请参阅自定义 fit() 的功能

其他 API 和工具#

Keras 提供了许多其他用于深度学习的 API 和工具,包括以下各项:

有关可用 API 的完整列表,请参阅 Keras API 参考。要了解有关其他 Keras 项目和计划的更多信息,请参阅 Keras 生态系统

后续步骤#

要开始将 Keras 与 TensorFlow 结合使用,请查看以下主题:

要详细了解 Keras,请参阅 keras.io 上的以下主题: