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 上的以下主题