|
|
||
|---|---|---|
| .. | ||
| lenet | ||
| README.md | ||
README.md
TensorFlow 模型转换示例
概述
本文档以 lenet 为例,演示如何使用 Netrans 对 TensorFlow 模型进行转换。当前支持 TensorFlow 1.4.x、2.0.x、2.3.x、2.6.x、2.8.x、2.10.x、2.12.x 和 2.15.x 通过 tf.io.write_graph() 保存的模型。
快速开始
1. 环境准备
请先在源码根目录执行 make install 安装 Netrans,完整步骤见安装指南。
2. 进入示例目录
cd examples/tensorflow
mamba activate netrans # 激活 netrans 环境
3. 数据准备
本示例包含以下文件:
lenet/
├── 0.jpg # 校准图像
├── dataset.txt # 数据集路径配置
├── inputs_outputs.txt # 输入输出节点定义
└── lenet.pb # TensorFlow冻结图模型
4. 快速转换(推荐)
# CLI 方式
netrans load lenet --mean 128 --std 1
netrans quantize lenet asymu8
netrans export lenet asymu8
分步详细流程
# 1. 模型导入
netrans load lenet --mean 128 --std 1
# 2. 模型量化
netrans quantize lenet asymu8
# 3. 嵌入前后处理节点
netrans add_pre_post lenet asymu8 --preprocess --postprocess
# 4. 模型导出
netrans export lenet asymu8
Python API 示例
基础转换
from netrans import Netrans
# 初始化
model = Netrans()
# 加载模型
model.load('lenet', mean=128, std=1)
# 量化
model.quantize('asymu8')
# 导出 NBG,并嵌入前后处理节点
model.export('asymu8', preprocess=True, postprocess=True)
分步API使用
from netrans import Netrans
model = Netrans()
# 分步执行
model.load('lenet', mean=128, std=1)
model.quantize('asymu8')
model.add_pre_post('asymu8', preprocess=True, postprocess=True)
model.export('asymu8', preprocess=False, postprocess=False)
输出说明
环境准备完成后,执行转换流程会生成:
lenet/
├── 0.jpg
├── dataset.txt
├── inputs_outputs.txt
├── lenet.pb
├── lenet.data # 模型权重数据(生成)
├── lenet.json # 模型结构描述(生成)
├── lenet_asymu8.quantize # 量化配置(生成)
├── lenet_inputmeta.yml # 输入元数据(生成)
├── lenet_postprocess_file.yml # 后处理配置(生成)
└── wksp/ # 工作空间(生成)
├── lenet_asymu8/ # 量化模型工程
└── lenet_asymu8_nbg_unify/ # 最终NBG输出
├── network_binary.nb # NBG模型文件(核心输出)
├── nbg_meta.json # NBG元数据
├── main.c # 测试程序
└── ... # 其他部署文件
核心输出文件:
network_binary.nb- 最终NBG模型文件,可直接部署到PNNA芯片nbg_meta.json- 模型元数据,包含输入输出信息main.c- 示例应用程序,展示如何加载和运行模型
相关文档
版本: 6.33.6+
更新日期: 2025-12-22
测试模型: lenet (TensorFlow冻结图格式)