模型文件格式大揭秘:H5、PT、ONNX、TFLite…一文搞懂所有主流格式

在深度学习项目中,你是否也曾面对一堆后缀各异的模型文件感到困惑?

.h5.pt.pth.onnx.tflite.pb……这些看似简单的文件扩展名,背后却藏着不同的框架、用途和部署场景。用错了格式,轻则无法加载,重则部署失败、性能暴跌。

别慌!本文将带你系统梳理12种主流模型文件格式,讲清它们的来龙去脉、适用场景,并提供模型转换路线图与代码示例。无论你是刚入门的新手,还是正在部署模型的工程师,都能快速找到答案。


一、为什么会有这么多模型格式?

深度学习生态百花齐放,不同框架(如 TensorFlow、PyTorch、Keras)各自发展,导致模型保存方式五花八门。每种格式都有其“出生背景”和“使命”:

  • 有的为训练设计(便于断点续训)
  • 有的为部署优化(轻量、跨平台)
  • 有的专为跨框架服务(如 ONNX)

理解这一点,你就迈出了第一步。


二、12种常见模型格式全解析

我们按“框架归属 → 文件用途 → 部署场景”三个维度,逐一拆解。

模型文件格式
├── TensorFlow/Keras
│   ├── .h5 (HDF5)
│   ├── .pb (SavedModel)
│   └── .ckpt (检查点)
├── PyTorch
│   ├── .pt / .pth (PyTorch 模型)
│   └── .bin (PyTorch 权重)
├── 通用/中间格式
│   ├── .onnx (ONNX 格式)
│   ├── .json + .bin (TensorFlow.js)
│   └── .safetensors (安全张量)
└── 移动端/边缘设备
    ├── .tflite (TensorFlow Lite)
    ├── .ncnn (NCNN 框架)
    └── .mnn (MNN 框架)

1. .h5(HDF5 格式)

  • 来源:Keras / TensorFlow 早期默认格式
  • 特点:支持保存模型结构 + 权重 + 配置,适合快速实验
  • 缺点:依赖 Python,跨平台能力差
  • 适用场景:Keras 模型训练、本地验证

✅ 推荐使用:Keras 用户做原型开发
❌ 不推荐用于生产部署

2. .pt / .pth(PyTorch 模型)

  • 来源:PyTorch
  • 本质:Python 的 pickle 序列化文件
  • 优点:保存灵活(模型、优化器、epoch等)
  • 风险:反序列化有安全风险,不跨语言

✅ 训练阶段必备
❌ 不能直接用于 C++ 或移动端

3. .onnx(Open Neural Network Exchange)

  • 定位:跨框架中间表示(IR)
  • 优势:PyTorch → ONNX → TensorFlow / TensorRT / ONNX Runtime
  • 支持平台广:Windows、Linux、Web、移动端
  • 局限:部分自定义算子可能不支持

✅ 多框架协作、推理加速首选
✅ 尤其适合需要部署到非 Python 环境的场景

4. .tflite(TensorFlow Lite)

  • 专为移动和嵌入式设备设计
  • 特点:量化支持好、体积小、推理快
  • 运行环境:Android、iOS、微控制器(如 ESP32)

✅ 手机端部署必选
✅ 支持 INT8、FP16 量化,显著降低资源消耗

5. .pb(Protocol Buffer,冻结图)

  • TensorFlow 经典格式,表示“冻结权重”的计算图
  • 曾用于 TensorFlow 1.x 的生产部署
  • 现已被 SavedModel 取代

⚠️ 已逐渐淘汰,建议新项目使用 SavedModel

6. .ckpt(Checkpoint 文件)

  • 非完整模型文件,仅保存某一轮训练的权重
  • 通常配合代码中的模型结构一起使用
  • 多用于训练中断恢复

❗ 注意:单独一个 .ckpt 文件无法独立加载模型

7. SavedModel(无后缀目录)

  • TensorFlow 官方推荐格式(TF 2.x)
  • 是一个包含 variables/saved_model.pb 的文件夹
  • 支持签名、版本管理、跨语言调用(via TensorFlow Serving)

✅ 生产环境标准格式
✅ 支持 REST/gRPC 接口部署

8. .bin(二进制权重文件)

  • 常见于 Hugging Face Transformers 或 C++ 推理引擎
  • 有时是 ONNX 或 PyTorch 导出的权重片段
  • 需结合配置文件(如 config.json)使用

🔄 多见于 NLP 模型分发

9. .safetensors(安全张量格式)

  • Hugging Face 推出的替代 .bin 的新格式
  • 不执行反序列化代码,避免 pickle 安全漏洞
  • 加载更快、更安全

✅ 推荐用于模型共享与部署
🔐 安全性优于 .bin

10. .json + .bin(TensorFlow.js)

  • 用于浏览器端运行模型
  • .json 描述结构,.bin 存储权重
  • 可通过 tfjs-converter 从 TF/Keras 转换而来

✅ Web 前端 AI 应用首选

11. .ncnn(腾讯开源推理框架)

  • 专为移动端优化的格式
  • 支持 Android/iOS,C++ 接口友好
  • 从 ONNX 或 Caffe 转换而来

✅ 国内 App 内嵌 AI 功能常用

12. .mnn(阿里开源模型压缩与推理引擎)

  • 轻量级、高性能,适用于手机、IoT 设备
  • 支持从 ONNX、TensorFlow、PyTorch 转换

✅ 高并发移动端推理场景优选


三、什么时候该用哪种格式?一张图说清楚


四、模型转换实战:代码示例

1. PyTorch → ONNX

import torch
import torch.onnx

# 假设 model 是已训练好的模型
model.eval()
dummy_input = torch.randn(1, 3, 224, 224)

torch.onnx.export(
    model,
    dummy_input,
    "model.onnx",
    export_params=True,
    opset_version=13,
    do_constant_folding=True,
    input_names=['input'],
    output_names=['output'],
    dynamic_axes={
        'input': {0: 'batch_size'},
        'output': {0: 'batch_size'}
    }
)

2. Keras → TensorFlow Lite

import tensorflow as tf

# 加载 Keras 模型
model = tf.keras.models.load_model('model.h5')

# 转换为 TFLite
converter = tf.lite.TFLiteConverter.from_keras_model(model)
# 可选:量化
# converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

# 保存
with open('model.tflite', 'wb') as f:
    f.write(tflite_model)

3. ONNX → TensorFlow.js(命令行)

# 先安装转换工具
pip install onnx-tf
npm install -g @tensorflow/tfjs-converter

# ONNX → TensorFlow SavedModel
python -m onnx_tf.cli convert -i model.onnx -o saved_model/

# SavedModel → tfjs
tfjs-converter --input_format=tf_saved_model saved_model/ tfjs_model/

五、模型格式选择建议表

使用场景

推荐格式

理由

Keras 快速实验

.h5

简单直接,支持完整模型保存

PyTorch 训练

.pt

保存模型和训练状态

跨平台推理

.onnx

支持多后端,生态丰富

手机 App 集成

.tflite / .mnn

轻量、高效、支持量化

Web 浏览器运行

.json + .bin

tf.js 原生支持

安全模型分发

.safetensors

防止反序列化攻击

生产服务部署

SavedModel

支持版本、签名、Serving


六、总结:别再被后缀名吓住

模型文件格式不是玄学,而是工具链的一环。关键在于:

  1. 训练阶段:用框架原生格式(.h5, .pt)快速迭代;
  2. 部署前:统一转换为中间格式(如 .onnx);
  3. 目标平台决定最终格式:服务器用 ONNX Runtime,手机用 TFLite/MNN,网页用 tf.js。

记住一句话:

“训练自由,部署规范”

掌握格式转换,你就掌握了从实验室到生产线的钥匙。


如果你觉得这篇文章有帮助,欢迎点赞、转发,让更多人看懂AI背后的逻辑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值