AI 模型常见存储格式文件介绍(pb / onnx / ckpt / tflite / h5)
pb格式阶段是否可训练跨框架典型用途ckpt训练是否断点恢复h5训练/推理是否Keras 模型SavedModel全流程是否TF 标准pb推理否否TF 推理onnx推理否是跨框架tflite推理否否移动端。
在 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:给“机器和部署”用的模型
更多推荐


所有评论(0)