菜单

核心API组件

相关源文件

本文详细介绍了 Keras API 的主要组件,阐述了构成 Keras 深度学习框架的基础类和接口。有关 API 如何生成的信息,请参阅API 生成

概述

核心 API 组件是 Keras 高级、用户友好型接口的基本构建块,同时保持后端无关的操作。它们使用户能够在不同后端(TensorFlow、JAX、PyTorch、NumPy 和 OpenVINO)之间一致地构建、训练和部署深度学习模型。

来源:keras/__init__.py1-80 keras/api/__init__.py1-60 README.md1-124

核心组件和类

Keras API 由多个核心组件组成,每个组件都为构建和训练深度学习模型提供了关键功能。

模型

模型是高级容器,用于定义神经网络的架构、输入和输出。

关键类

  • Model:所有 Keras 模型的基础类,支持编译、训练、评估和推理。
  • Sequential:一种特殊类型的模型,用于具有单个输入和输出的线性层堆栈。

模型处理的操作包括:

  • 定义网络架构
  • 使用 .fit() 进行训练
  • 使用 .evaluate() 进行评估
  • 通过 .predict() 进行预测
  • 使用 .save()keras.saving.load_model() 进行保存和加载

来源:keras/api/__init__.py52-53

层数

层是 Keras 中神经网络的基本构建块,封装了权重、计算和状态。

关键类

  • Layer:所有层的基类,处理权重、计算和形状。
  • Input:用于创建模型输入的特殊层。
  • InputSpec:输入形状的规范,用于验证输入。

层可以是:

  • 核心层(Dense、Conv2D 等)
  • 预处理层(TextVectorization、Normalization 等)
  • 用户自定义层

每个层都实现了一个 call() 方法,执行前向计算并可选地跟踪反向传播的变量。

来源:keras/api/__init__.py48-50

操作

操作是后端无关的函数,驱动 Keras 在不同框架上的计算。

关键类

  • Operation:后端无关操作的基类。
  • Function:用于创建可调用图函数的 Keras 函数类。

操作被组织成模块:

  • keras.ops.numpy:兼容 NumPy 的操作
  • keras.ops.nn:神经网络操作

操作有两种执行模式:

  1. 符号模式:在模型构建期间使用,返回 KerasTensor 对象
  2. 即时执行模式:在执行期间使用,返回具体值

来源:keras/api/__init__.py54-55

训练组件

支持模型训练、评估和性能测量的组件。

关键类

  • Loss:用于优化模型的损失函数基类。
  • Metric:用于评估模型性能的指标基类。
  • Optimizer:更新模型权重的优化器基类。

这些组件在模型训练过程中协同工作:

  • 损失函数计算预测值与目标值之间的误差
  • 优化器更新权重以最小化损失
  • 指标在训练和评估期间跟踪性能指标

来源:keras/api/__init__.py50-51 keras/api/__init__.py56

张量表示

在 Keras 框架内表示张量和变量的类。

关键类

  • KerasTensor:在模型构建期间使用的符号张量表示。
  • Variable:保存张量值的可训练参数对象。

来源:keras/api/__init__.py37 keras/api/__init__.py36

内存管理

用于在模型训练期间优化内存使用的组件。

关键类

  • RematScope:用于启用重计算(梯度检查点)的上下文管理器。

重计算通过在反向传播期间重新计算中间激活而不是存储它们,从而以计算换取内存,这对于在内存限制内训练大型模型特别有用。

来源:keras/src/backend/common/remat.py8-186 keras/src/backend/common/remat_test.py13-118

自定义组件

允许自定义模型行为的组件。

关键类

  • Initializer:权重初始化器的基类。
  • Regularizer:权重正则化器的基类。
  • Quantizer:权重量化的基类。

这些组件支持模型训练和部署的自定义:

  • 初始化器控制层权重的初始化方式
  • 正则化器对权重施加惩罚以防止过拟合
  • 量化器减小模型大小和计算需求

来源:keras/api/__init__.py46 keras/api/__init__.py58 keras/api/__init__.py57

执行控制

控制 Keras 操作执行行为的组件。

关键类

  • StatelessScope:用于无状态(确定性)执行的上下文管理器。
  • SymbolicScope:用于符号执行的上下文管理器。

这些作用域修改了操作的执行方式:

  • StatelessScope 确保操作产生确定性结果
  • SymbolicScope 强制使用符号执行模式

来源:keras/api/__init__.py42-43

模块结构

Keras API 被组织成模块,将相关功能进行分组:

模块描述关键组件
keras.models模型定义ModelSequential
keras.layers层定义核心层、卷积层等。
keras.losses损失函数Loss,以及像 BinaryCrossentropy 这样的预定义损失函数
keras.metrics性能指标Metric,以及像 Accuracy 这样的预定义指标
keras.optimizers优化算法Optimizer,以及像 Adam 这样的实现
keras.callbacks训练回调Callback,以及像 EarlyStopping 这样的实现
keras.preprocessing数据预处理预处理层、图像预处理
keras.applications预训练模型ResNetVGG 这样的模型
keras.ops后端操作神经网络和兼容 NumPy 的操作
keras.backend后端接口后端特定功能和配置
keras.saving模型序列化用于保存和加载模型的功能
keras.utils实用函数各种任务的辅助函数

来源:keras/__init__.py1-80 keras/api/__init__.py7-35

API生成

Keras API 是使用 api_gen.py 从源代码自动生成的。这确保了公共 API 的一致性,同时保持了清晰的内部实现。API 组织在 keras/api/ 目录中,每个模块都有自己的文件或子目录。

有关 API 如何生成的更多详细信息,请参阅API 生成

来源:api_gen.py1-202