Netrans Python API 参考
版本: v6.33.3 (Python 3.10 + Acuity 6.33)
概述
Netrans 提供简洁的 Python API,用于将神经网络模型转换为 PNNA 芯片可运行的 NBG 格式。
核心流程
load() → quantize() → export()
快速示例
from netrans import Netrans
model = Netrans()
model.load('./yolov5s', mean=[0, 0, 0], scale=255)
model.quantize('asymu8')
model.export('asymu8', platform='pnna')
Netrans 类
初始化
Netrans()
创建 Netrans 实例,自动验证运行环境和依赖项。
加载模型
load()
load(model_path, *, mean=None, scale=None)
加载并准备模型,支持多种框架格式和预处理参数配置。
参数:
model_path(str): 模型目录路径,必须包含有效的模型文件mean(float | list[float], 可选): 通道均值列表:长度必须与模型输入通道数一致
单值:仅适用于单通道模型
scale(float | list[float], 可选): 通道缩放系数单值:自动广播到所有通道
列表:长度必须与 mean 一致
示例:
# 三通道模型
model.load('./yolov5s', mean=[0, 0, 0], scale=255)
# 单通道模型
model.load('./lenet_gray', mean=127.5, scale=255)
注意:
支持的模型格式:ONNX, TensorFlow, TFLite, PyTorch, Caffe, Darknet, Keras
导入格式兼容性详见 cookbook.md
load_generated()
load_generated(model_path, quantized="float32", use_hybrid=False)
加载已生成的模型(用于继续处理已量化的模型)。
参数:
model_path(str): 模型目录路径quantized(str, 可选): 量化类型,默认 "float32"use_hybrid(bool, 可选): 是否使用混合量化,默认 False
量化
quantize()
quantize(quantized, *, algorithm=1, iterations=1, entropy=False, mle=False)
对加载的模型进行量化处理。
参数:
quantized(str): 目标量化类型asymu8: 非对称8位无符号(默认推荐)symi8: 对称8位有符号symi16: 对称16位有符号fp16: 半精度浮点更多类型详见 cookbook.md 速查表
algorithm(int, 可选): 量化算法,默认 10: normal - 普通量化1: KL - KL散度(默认)2: moving_average - 移动平均3: auto - 自动选择
iterations(int, 可选): 量化迭代次数,默认 1entropy(bool, 可选): 计算张量熵,用于量化分析,默认 Falsemle(bool, 可选): 最小化层间误差,用于量化分析,默认 False
示例:
# 基础量化
model.quantize('asymu8')
# 高精度量化
model.quantize('asymu8', algorithm=1, iterations=5)
# 量化分析模式
model.quantize('asymu8', entropy=True, mle=True)
quantize_hybrid()
quantize_hybrid(quantized, *, algorithm=1, iterations=1,
hybrid_qtype='dfpi16', cust_qnt_layers=None)
对指定层应用混合精度量化。
参数:
quantized(str): 基础量化类型algorithm(int, 可选): 量化算法,同quantize()iterations(int, 可选): 迭代次数,默认 1hybrid_qtype(str, 可选): 混合层量化类型,默认 'dfpi16'cust_qnt_layers(str, 可选): 自定义量化层配置文件路径
配置文件格式(cust_qnt_layers.txt):
Conv_245
Conv_269
Conv_293
示例:
model.quantize_hybrid('asymu8', cust_qnt_layers='layers.txt')
导出
export()
export(quantized='float32', *, model_path=None, platform='pnna',
use_hybrid=False, preprocess=True, postprocess=True, core_num=None)
将量化后的模型导出为 PNNA 芯片可加载的 NBG 格式。
参数:
quantized(str, 可选): 量化类型,默认 'float32'model_path(str, 可选): 模型目录路径platform(str, 可选): 目标芯片平台,默认 'pnna''pnna': VIP8000(单核架构,默认平台)'pnna2': VIP9400(多核架构,支持 1-4 核)
use_hybrid(bool, 可选): 是否使用混合量化,默认 Falsepreprocess(bool, 可选): 是否集成预处理到网络图,默认 Truepostprocess(bool, 可选): 是否集成后处理到网络图,默认 Truecore_num(str, 可选): 多核配置(仅 pnna2 支持)"1core"/"1": 单核"2core"/"2": 双核"4core"/"4": 四核
示例:
# 基础导出
model.export('asymu8')
# 带前后处理
model.export('asymu8', preprocess=True, postprocess=True)
# 多核导出(仅 pnna2)
model.export('asymu8', platform='pnna2', core_num='4core')
输出文件:
wksp/<model>_<quantized>_nbg_unify/network_binary.nb: NBG 文件wksp/<model>_<quantized>_nbg_unify/nbg_meta.json: 元数据
调试分析
dump()
dump(quantized='float32', *, use_hybrid=False)
导出网络各层张量数据,用于量化效果分析。
参数:
quantized(str, 可选): 量化类型,默认 'float32'use_hybrid(bool, 可选): 是否使用混合量化,默认 False
输出: dump/<model>_<quantized>/ 目录下的张量文件
inference()
inference(quantized='float32', *, iterations=1, use_hybrid=False)
运行模型推理并保存输入输出张量。
参数:
quantized(str, 可选): 量化类型,默认 'float32'iterations(int, 可选): 推理迭代次数,默认 1use_hybrid(bool, 可选): 是否使用混合量化,默认 False
输出: wksp/<model>_<quantized>/golden/ 目录
check_opset()
check_opset(model_path, verbose=False)
检查 ONNX 模型的 opset 版本是否符合要求。
参数:
model_path(str): ONNX 模型文件路径或目录verbose(bool, 可选): 是否显示详细信息,默认 False
返回: bool,是否符合要求
支持的 opset 版本: 7 - 17
示例:
is_valid = model.check_opset('./model.onnx')
参数速查
量化类型
量化算法
值 |
算法 |
说明 |
|---|---|---|
0 |
normal |
普通量化 |
1 |
KL |
KL散度(推荐) |
2 |
moving_average |
移动平均 |
3 |
auto |
自动选择 |
预处理参数
完整示例
更多示例请参考 cookbook.md。
相关文档
cookbook.md - 实用指南、速查表、故障排查
netrans_cli.md - 命令行工具参考
版本发布记录