Format Atlas

对比

Keras与ONNX:训练状态保存与推理导出

.keras在Keras中保存模型配置、权重以及存在的优化器状态。ONNX用计算图向兼容的运行时表示模型。

应该选择哪种格式?

若需在Keras中重新加载并继续训练,可考虑.keras;若需在另一兼容运行时推理,可考虑ONNX。

适用于 Keras

将 Keras v3 模型配置权重及可用训练状态保存到一个归档 · 在兼容的 Keras 环境中保存和重新加载模型

  • 保存主要由可序列化 Keras 层组成的模型
  • 将模型配置和权重一起管理

适用于 ONNX

向兼容运行时交换机器学习计算图和权重 · 在训练框架与推理环境之间迁移模型

  • 在支持模型算子和 opset 的运行时中推理
  • 交换包含输入输出和类型的模型图

基本信息

项目KerasONNX
扩展名.keras.onnx
MIME 类型application/zipapplication/octet-stream
常见用途将 Keras v3 模型配置权重及可用训练状态保存到一个归档 · 在兼容的 Keras 环境中保存和重新加载模型向兼容运行时交换机器学习计算图和权重 · 在训练框架与推理环境之间迁移模型
打开方式使用兼容版本的 Keras `load_model` 加载。存在自定义层或对象时,在环境中注册可信实现,并通常保持 safe mode 开启。ZIP 工具可查看归档,但编辑解压内容可能导致无法重新加载。使用 ONNX 检查器或兼容推理运行时加载。部署前检查 IR/opset 版本、算子、输入输出类型和形状及运行时支持;使用有代表性的输入与源模型比较输出。
导出或转换使用 Keras `save` 或 `saving.save_model` 保存整个模型。仅用于推理的交付中,保存 `.keras` 和 `export` 目的不同。在目标 Keras 环境重新加载,并验证代表性输出、权重及所需编译或优化器状态。使用源训练框架提供的 ONNX 导出器转换,并用 ONNX checker 验证结构。转换成功不保证数值等价或能在目标设备运行。使用外部数据时,将模型和所有引用文件作为同一交付单元保存。

按用途选择

保存主要由可序列化 Keras 层组成的模型

将 Keras v3 模型配置权重及可用训练状态保存到一个归档 · 在兼容的 Keras 环境中保存和重新加载模型

Keras

将模型配置和权重一起管理

将 Keras v3 模型配置权重及可用训练状态保存到一个归档 · 在兼容的 Keras 环境中保存和重新加载模型

Keras

在支持模型算子和 opset 的运行时中推理

向兼容运行时交换机器学习计算图和权重 · 在训练框架与推理环境之间迁移模型

ONNX

交换包含输入输出和类型的模型图

向兼容运行时交换机器学习计算图和权重 · 在训练框架与推理环境之间迁移模型

ONNX

关键点 1

Keras的save保存模型配置和状态,自定义对象的实现可能需要另行提供。

进一步了解差异

关键点 2

ONNX包含具备类型的输入输出、计算图和opset信息,执行需要兼容的运行时。

进一步了解差异

进一步了解差异

保存.keras和导出ONNX是不同操作。核对Keras版本、后端和运算支持;生成推理文件时保留原始.keras及依赖代码。

  • Keras官方export API支持ONNX输出。记录输入类型、形状和所选opset,并核对目标运行时是否实现全部运算。
  • 使用相同预处理和代表性输入对比原模型输出,记录容差与设备条件。ONNX结构检查不能独自保证数值一致、速度或Keras训练状态的保留。

常见问题

可以删除.keras并从ONNX导出文件继续训练吗?

不能这样假设。推理导出不保证重建包含优化器状态和自定义对象的Keras保存内容。请保留原始.keras、必要代码和环境信息。

了解详情

相关用途与检查步骤

AI模型交接前的检查流程

参考资料与规范