在 AI 工程中,模型并不只是一堆参数,而是“结构 + 参数 + 运行约束”的组合体。
不同阶段(训练 / 推理 / 跨框架 / 端侧部署)会使用不同的模型存储格式

本文系统介绍以下常见模型格式:

  • TensorFlow 的 .ckpt

  • TensorFlow 的 .pb

  • Keras 的 .h5 / SavedModel

  • ONNX

  • TFLite

重点说明它们的用途、内部结构,以及在 AI 部署链路中的角色


1. TensorFlow .ckpt 模型文件

.ckpt 是 TensorFlow 训练阶段最典型的模型保存格式,本质是训练状态快照

一个完整的 checkpoint 通常包含多个文件:

  • model.ckpt.meta
    保存 TensorFlow 的计算图结构(Graph Definition),可理解为网络拓扑结构

  • model.ckpt.data-xxxx-of-xxxx
    保存所有变量(Variables)的具体数值
    即模型中可训练参数(权重、偏置等)

  • model.ckpt.index
    变量索引信息,用于快速查找参数

  • checkpoint
    记录当前目录下有哪些 checkpoint,以及“最新的是哪个”

特点与用途

  • 主要用于:

    • 训练中断恢复

    • 继续训练(resume training)

  • 强依赖 TensorFlow 代码

  • 不适合直接部署

  • 不适合跨框架使用

一句话总结:

ckpt 是“训练态模型”,不是“部署态模型”。


2. TensorFlow .pb 模型文件(Frozen Graph)

什么是 .pb

.pb 是 Protocol Buffers(protobuf) 的二进制序列化格式。
在 TensorFlow 中,.pb 通常指 冻结后的计算图(Frozen Graph)

冻结(freeze)的含义是:

  • 把 Variable(变量)

  • 转换成 Constant(常量)

  • 将 结构 + 参数 合并进同一个文件

生成方式

常见方式是:

  • graph_util.convert_variables_to_constants

  • 或使用 tf.compat.v1.graph_util

生成一个 不可训练、只用于推理 的模型。

特点

  • 不包含 Python 源代码

  • 不包含训练状态

  • 加载速度快

  • 适合服务器端推理

你文中提到的类比是非常准确的:

.pb 就像 C 语言编译后的机器码,
可执行,但几乎无法还原成源码。


3. Keras .h5 / .hdf5 模型文件

.h5 是基于 HDF5 格式的模型文件,Keras 时代的经典方案。

.h5 能保存什么?

一个 .h5 文件通常包含:

  • 模型结构(JSON 形式)

  • 模型参数(权重)

  • 可选:优化器状态

特点

  • 单文件,易管理

  • 与 Keras API 强绑定

  • 易加载、易分享

  • 适合中小模型

局限性

  • 不适合超大模型

  • 不利于复杂部署场景

  • TensorFlow 官方已更推荐 SavedModel

一句话总结:

.h5 是 “Keras 友好型模型快照”


4. TensorFlow SavedModel(补充,实际非常重要)

虽然你原文没写,但工程上必须补这一节。

SavedModel 是什么?

这是 TensorFlow 官方推荐的标准模型格式,是一个目录结构:

saved_model/
├── assets/
├── variables/
│   ├── variables.data-00000-of-00001
│   └── variables.index
└── saved_model.pb

 

特点

  • 同时支持:

    • 训练

    • 推理

    • TensorFlow Serving

    • TFLite / ONNX 转换

  • 明确区分输入 / 输出 signature

  • 工业界使用最广

一句话总结:

SavedModel 是 TensorFlow 世界里的“正统继承人”。


5. ONNX 模型文件

ONNX 是什么?

ONNX(Open Neural Network Exchange) 是一个跨框架模型表示标准

支持导出 / 导入的框架包括:

  • PyTorch

  • TensorFlow

  • MXNet

  • Paddle

  • JAX(部分)

ONNX 文件本质

  • 基于 protobuf

  • 描述:

    • 计算图

    • 算子

    • 权重

  • 不绑定某个具体训练框架

使用场景

  • 跨框架部署

  • 使用 ONNX Runtime / TensorRT / OpenVINO

  • 高性能推理

特点

  • 框架无关

  • 强调 推理一致性

  • 算子集合受限(不是所有自定义算子都支持)

一句话总结:

ONNX 是 AI 世界的“通用中间语言”。


6. .tflite 模型文件

你原文对 TFLite 的描述是对的,我帮你补齐工程视角。

TFLite 是什么?

TensorFlow Lite 是 面向移动端 / 嵌入式设备的推理框架

.tflite 文件特点

  • 基于 FlatBuffers

  • 不需要反序列化

  • 零拷贝访问

  • 文件小、加载快

常见能力

  • INT8 / FP16 量化

  • ARM / DSP / NPU 加速

  • 端侧离线推理

使用链路


SavedModel / h5 ↓ TFLite Converter ↓ .tflite

一句话总结:

.tflite 是 “能塞进手机和芯片里的模型形态”


7. 各模型格式对比总结(工程视角)

格式 阶段 是否可训练 跨框架 典型用途
ckpt 训练 断点恢复
h5 训练/推理 Keras 模型
SavedModel 全流程 TF 标准
pb 推理 TF 推理
onnx 推理 跨框架
tflite 推理 移动端

8. 结论

整条链路:

ckpt / h5 / SavedModel:给“人和框架”用的模型
pb / onnx / tflite:给“机器和部署”用的模型

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐