Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Keras

Keras 是一个用于构建和训练神经网络的高级 Python API;从 Keras 3 开始,同一份代码可运行于 JAX、TensorFlow 或 PyTorch。

Keras 是一个用于构建和训练神经网络的开源高级 Python API。François Chollet 于 2015 年 3 月发布了 Keras,旨在让深度学习实验更容易快速编写:模型由层堆叠而成或构成计算图,compile用于设置优化器、损失函数和指标,而 fit则负责运行训练循环。Keras 后来成为 TensorFlow 的官方高级 API;2023 年 11 月发布的 Keras 3 可以在 JAX、TensorFlow 或 PyTorch 上运行相同的模型代码,具体后端在导入 Keras 时选择。Keras 简洁易读的代码让它成为教学、原型开发和 Kaggle 竞赛的常见选择,也适用于图像分类和自然语言处理等领域的生产模型。

Keras 的工作原理#

Keras 模型由 Dense、Conv2D、LSTM 和 MultiHeadAttention 等层构成,每层都持有自己的权重。Keras 提供三种组装方式:用于简单堆叠的 Sequential API、用于包含分支、共享层或多个输入的计算图的函数式 API,以及用于全面控制前向传播的子类化 keras.Model。编译后的模型通过 fit 进行训练,它会处理批处理、反向传播、指标、验证数据和用于保存检查点或提前停止的回调,然后使用 evaluate 和 predict 对新数据进行评分。下面的代码使用 Keras 自带的 MNIST 数据集训练一个小型数字分类器:

import os

os.environ["KERAS_BACKEND"] = "torch"  # or "jax" or "tensorflow", set before importing Keras

import keras

# MNIST handwritten digits, with pixels scaled to [0, 1]
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

# Define the model as a stack of layers
model = keras.Sequential(
    [
        keras.Input(shape=(28, 28)),
        keras.layers.Flatten(),
        keras.layers.Dense(128, activation="relu"),
        keras.layers.Dense(10, activation="softmax"),
    ]
)

# Configure training, then train and evaluate
model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"])
model.fit(x_train, y_train, epochs=2, batch_size=64, verbose=0)
loss, accuracy = model.evaluate(x_test, y_test, verbose=0)
print(f"Test accuracy: {accuracy:.3f}")

经过两个轮次后,程序会输出约 0.96 的测试准确率;将 "torch" 改为 "jax" 或 "tensorflow",即可在另一个框架上运行同一模型,无需修改其他任何一行代码。

Keras 3 及其后端#

Keras 最初可运行在多个引擎上,包括 Theano、TensorFlow 和 CNTK。2019 年 9 月发布的 Keras 2.3 是最后一个支持多后端的版本;之后,开发工作转入 TensorFlow,并成为 tf.keras。Keras 3恢复了后端独立性:层和模型基于 keras.ops 编写,这是一组类似 NumPy 的操作,由各个后端分别实现;因此,使用 .keras 格式保存的模型可以在任何后端重新加载并训练。使用 PyTorch 后端时,Keras 模型同时也是一个 torch.nn.Module,可供自定义 PyTorch 训练循环使用;从 Keras 3.8 开始,纯推理的 OpenVINO 后端还能在 Intel 硬件上运行训练好的模型。

从 TensorFlow 2.16 开始,安装 TensorFlow 时会一并安装 Keras 3;仍需要 Keras 2 的代码则使用单独的 tf_keras 包。模型转换器也支持 Keras:当 Ultralytics YOLO 将 YOLO26导出为 TensorFlow SavedModel时,onnx2tf 转换器会根据其 ONNX计算图逐层重建 PyTorch 网络,将其转换为 Keras 模型后再保存。

KerasHub 中的预训练模型#

KerasHub提供热门架构的 Keras 3 实现和预训练检查点,例如用于图像的 ResNet、用于文本的 BERT,以及 Gemma 大语言模型。指定一个预设名称即可加载可用于迁移学习的模型:keras_hub.models.ImageClassifier.from_preset("resnet_50_imagenet")会返回一个在 ImageNet 上训练的分类器,你只需像上文一样调用 fit,即可通过微调让它适配新数据集。与 Keras 3 的其他部分一样,KerasHub 模型可在三个训练后端中的任意一个上运行。

Keras 与 TensorFlow 和 PyTorch 的比较#

  • TensorFlow:一个拥有自身运行时、编译器和部署工具(例如 TensorFlow Serving 和 LiteRT)的完整框架。许多 TensorFlow 用户通过 Keras API 编写模型,而 TensorFlow 是运行 Keras 代码的引擎之一。
  • PyTorch:一个通常由用户自行编写训练循环,或使用 PyTorch Lightning 等库的框架。Keras 通过 fit提供训练循环,也可以使用 PyTorch 作为后端,因此两者并不互斥。
  • JAX:Google 提供的库,用于组合函数变换以实现微分、XLA 编译和向量化。JAX 没有内置的层或训练 API,而 Keras 是在其基础上获得这类 API 的方式之一。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来