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:训练模型固定数量的 epoch。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,请查看以下主题
- 顺序模型
- 函数式 API
- 使用内置方法进行训练和评估
- 通过子类化创建新的层和模型
- 序列化和保存
- 使用预处理层
- 自定义 fit() 中发生的事情
- 从头开始编写训练循环
- 使用 RNN
- 了解掩码和填充
- 编写自己的回调
- 迁移学习和微调
- 多 GPU 和分布式训练
要了解有关 Keras 的更多信息,请查看 keras.io 上的以下主题