前言¶
概述
本文档介绍如何在HiSpark系列MCU上,基于MindSpore Lite Enterprise Micro v106版本,实现第三方开源框架(如TFLite、ONNX等)网络模型的轻量化部署与推理任务。Converter_lite是MindSpore Lite Enterprise Micro的转换工具,基于一系列内存/算子优化技术,生成适配HiSpark MCU上可执行的Micro模块代码。基于Converter_lite,在服务器端能够将模型转换为可在x86 / RISCV平台(x86部署可以为板端调试提供精度标杆)上部署的Micro工程代码,从而脱离在线解析模型和图编译,具有运行时内存小、代码轻量化等特点。
通过本文档,您将能够实现以下目标:
了解不同开源框架网络模型离线转换Micro工程代码的方法。
能够基于本文档的参数配置,转成量化或非量化的Micro工程代码。
能够基于Micro工程代码在x86/RISCV平台侧(x86部署可以为板端调试提供精度标杆)做部署推理。
掌握以下经验和技能可以更好理解本文档:
熟悉Linux基本命令。
对机器学习、人工智能有一定的了解。
有一定的C++工程开发经验。
读者对象
本文档适用于使用MindSpore Lite Enterprise Micro v106工具进行AI模型端侧部署的人员,本文档适用于以下工程师:
技术支持工程师
软件工程师
硬件工程师
符号约定
在本文中可能出现下列标志,它们所代表的含义如下。
符号 |
说明 |
|---|---|
|
表示如不避免则将会导致死亡或严重伤害的具有高等级风险的危害。 |
|
表示如不避免则可能导致死亡或严重伤害的具有中等级风险的危害。 |
|
表示如不避免则可能导致轻微或中度伤害的具有低等级风险的危害。 |
|
用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。 “须知”不涉及人身伤害。 |
|
对正文中重点信息的补充说明。 “说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。 |
修改记录
文档版本 |
发布日期 |
修改说明 |
|---|---|---|
03 |
2026-03-24 |
新增Onnx/TFLite算子规格:
|
02 |
2025-12-18 |
新增Onnx/TFLite算子规格:
|
01 |
2025-10-30 |
第一次正式版本发布。 |
Converter_lite工具使用环境搭建¶
获取converter_lite转换工具¶
工具包获取:converter_lite工具位于发布包的“mindspore-enterprise-lite-{version}-linux-x64/tools/converter/converter/converter_lite”路径下,其中“version”为软件版本号。
本文档以converter_lite转换工具的使用为例进行说明。
设置环境变量¶
使用export方式设置环境变量后,环境变量仅在当前窗口有效。如果用户之前已在.bashrc文件中设置过环境变量,则需要在执行上述命令前,先手动删除原来设置的环境变量。
必选环境变量
设置converter_lite工具动态库链接。
export LD_LIBRARY_PATH=mindspore-enterprise-lite-{version}-linux-x64安装目录/tools/converter/lib:$LD_LIBRARY_PATH将Python3.11的路径添加到LD_LIBRARY_PATH中。
export LD_LIBRARY_PATH=${py311_inptsll_path}/lib:$LD_LIBRARY_PATH将GCC的libstdc++6.0.30库路径添加到LD_LIBRARY_PATH中。
export LD_LIBRARY_PATH=${libc++6.0.30_path}/libxx:$LD_LIBRARY_PATH切换到GCC中libstdc++.so.6.0.30的安装目录,为libstdc++建立软链接。
ln -s libstdc++.so.6.0.30 libstdc++.so.6
可选环境变量
若需要在RISCV平台进行部署推理,只需配置RISCV交叉编译链路径。
设置RISCV交叉编译工具链:
export HISPARK_RISCV_TOOLCHAIN_PATH=${sdk_install_path}/tools/bin/compiler/riscv/cc_riscv32_musl_105/
限制与约束¶
关于工具链版本的约束要求,如表1所示。
表 1 工具链版本约束
工具链名称 |
工具链版本 |
|---|---|
GCC |
12.3.0 |
CMake |
3.28.2 |
riscv32-linux-musl-gcc |
(build ver100.090 2023-05-17) 7.3.0 |
riscv32-linux-musl-g++ |
(build ver100.090 2023-05-17) 7.3.0 |
Ubuntu |
22.04 |
Python |
3.11 |
快速入门¶
本章节以TFLite与ONNX框架的MNIST模型转换为例,演示如何快速转换生成Micro工程推理代码。
开源框架的TFLite/ONNX模型转换为Micro工程¶
获取开源框架MNIST网络模型。
TFLite模型:从链接中获取MNIST网络的模型文件:mnist网络模型,下载后解压得到mnist.tflite、mnist.tflite.ms.bin(MNIST输入数据)、mnist.tflite.ms.out(标杆输出数据,可用于精度对比)。该模型为已经训练完成的MNIST分类模型,为TFLite模型,将mnist.tflite模型拷贝到开发环境任意目录,例如上传到“$HOME/module/”目录下。
ONNX模型:从链接中获取mnist网络的模型文件:mnist网络模型,下载解压得到mnist-7.onnx,该模型为已经训练完成的MNIST分类模型,为ONNX模型,将mnist-7.onnx模型拷贝到开发环境任意目录,例如上传到“$HOME/module/”目录下。
获取converter_lite的压缩包,并进行解压。
tar -xvf mindspore-enterprise-lite-{version}-linux-x64.tar.gz将转换工具运行时所需的动态链接库添加到环境变量LD_LIBRARY_PATH中。
export LD_LIBRARY_PATH=mindspore-enterprise-lite-{version}-linux-x64/tools/converter/lib/tools/converter/lib:${LD_LIBRARY_PATH}进入转换目录。
cd mindspore-enterprise-lite-{version}-linux-x64安装目录/tools/converter/converter设置Micro配置项。
场景一:以x86平台部署为例,将原模型直接转换为Micro工程目录。
#控制micro配置项 [micro_param] # 支持code-gen生成Micro工程代码 enable_micro=true # 支持x86,RISCV平台 target=x86 # 配置是否并行推理,当前仅支持单线程推理 support_parallel=false
场景二:以x86平台部署为例,将FP32原模型转换为int8量化Micro工程目录,具体参数请参见“参数说明”章节。
#控制micro配置项 [micro_param] # 支持code-gen生成Micro工程代码 enable_micro=true # 支持x86,RISCV平台 target=x86 # 配置是否并行推理,当前仅支持单线程推理 support_parallel=false #控制通用量化参数配置项 [common_quant_param] # 当前仅支持全量化方式 quant_type=FULL_QUANT # 全量化仅支持8bit量化 bit_num=8 # 配置校准数据集参数 [data_preprocess_param] #关于calibrate_path解释为前半部分是网络的输入名称,后半部分是输入存放路径,详细设置请参见“参数说明”章节 calibrate_path=input:${HOME}/module/dataset/quant_data #数据集大小,这里必须与calibrate_path目录下的数据集大小对应,请参见“参数说明”章节 calibrate_size=1 #数据集格式,仅支持bin校准数据集格式,且该数据集下不允许存储非bin格式文件 input_type=BIN #全量化参数配置项 [full_quant_param] #激活值量化算法选择MAX_MIN,当前仅支持MAX_MIN量化算法 activation_quant_method=MAX_MIN #是否开启数据集校准 bias_correction=true #扩展量化算子,提升量化精度且牺牲性能可关闭 enable_all_ops=true
执行如下命令生成Micro工程代码(如下命令中使用的目录以及文件均为样例,请以实际为准)。
TFLite模型converter_lite转换命令:
#转换TFLite框架的MNIST模型生成Micro工程代码,converter_lite转换时参数请参见“参数说明”章节 ./converter_lite --fmk=TFLITE --modelFile=mnist.tflite --outputFile=mnist --configFile=micro.cfg --encryption=false --inputDataFormat=NHWC --outputDataFormat=NHWC --inputDataType=FLOAT --outputDataType=FLOAT
ONNX模型converter_lite转换命令:
#转换ONNX框架的MNIST模型生成Micro工程代码,converter_lite转换时参数请参见“参数说明”章节 ./converter_lite --fmk=ONNX --modelFile=mnist-7.onnx --outputFile=mnist --configFile=micro.cfg --encryption=false --inputDataFormat=NCHW --outputDataFormat=NCHW --inputDataType=FLOAT --outputDataType=FLOAT
运行成功后的结果显示为:
CONVERT RESULT SUCCESS:0
若想快速体验转换后的Micro工程代码的编译与推理,请准备好环境、符合模型输入要求的*.bin输入数据以及Micro工程代码,具体操作请参见“初级功能”章节。
基础知识¶
工具功能架构¶
converter_lite工具功能架构设计如图1所示。
图 1 converter_lite工具功能架构

开源框架网络模型场景的详细流程如下:
开源框架网络模型经过Parser解析后,转换为中间态IR Graph。
中间态IR经过图拆分与图编译优化操作后,根据节点注册对应规格算子。
生成模型权重数据、头文件与C源码等Micro工程代码。
通过gcc或者RISCV交叉编译工具链生成静态库文件,并将其上传到指定平台执行推理。
工具运行流程¶
使用converter_lite工具将模型转成Micro工程代码的总体流程如图1所示。
图 1 converter_lite工具运行流程图

详细流程说明如下:
使用converter_lite工具之前,请先在开发环境中安装converter_lite工具包,并获取相关路径下的converter_lite工具。详细说明请参见“Converter_lite工具使用环境搭建”章节。
准备要进行转换的模型文件,并将其上传到开发环境。
设置Micro配置项,可根据需要进行量化与非量化的参数配置。
使用converter_lite工具进行模型转换,生成Micro工程代码。
编译Micro工程。
初级功能¶
本章节介绍如何在“基础知识”Micro工程代码的基础上进行编译部署推理。当前支持模型规格如下:
FP32 TFLite模型FP32 Micro推理。
FP32 TFLite模型INT8量化Micro推理。
INT8 TFLite模型INT8 Micro推理。
FP32 ONNX模型FP32 Micro推理。
FP32 ONNX模型INT8量化Micro推理。
支持推理平台为:x86_64平台(x86部署可以为板端调试提供精度标杆)与RISCV平台。
支持后端类型:CPU单核单线程。
RISCV平台编译部署¶
本节以FP32的mnist.onnx模型为例,介绍如何利用生成的Micro INT8量化推理代码,并在RISCV平台部署推理。
converter_lite工具转换开源框架模型生成Micro工程,请参见“快速入门”章节。
须知:在使用converter_lite转换命令时,--fmk选项必须与AI模型的开源框架对应,否则将导致转换失败。
micro.cfg的target必须选择RISCV,并且需要按照“开源框架的TFLite/ONNX模型转换为Micro工程”章节中的5场景二进行配置。
RISCV平台部署编译需要依赖海思提供的RISCV编译工具链,需下载相应的工具包。
切换到Micro工程目录。
#切换到名为micro的Micro工程目录 cd $HOME/micro/
下载并解压converter_lite工具包。
#进入到算子库在开发环境的路径 cd ${mindspore-enterprise-lite-{version}-linux-x64安装目录} #解压tar包 tar -xvf mindspore-enterprise-lite-{version}-linux-x64.tar.gz
在Micro工程目录新建“build_riscv.sh”脚本,配置如下:
#mindspore-enterprise-lite-{version}-linux-x64为converter_lite工具包在开发环境的路径,sdk_path为海思工具包在开发环境的路径 rm -rf build cmake -S . -B build -D OP_LIB="${mindspore-enterprise-lite-{version}-linux-x64安装目录}/tools/codegen/lib/riscv/libnnacl.a" \ -D WRAPPER_LIB="${mindspore-enterprise-lite-{version}-linux-x64安装目录}/tools/codegen/lib/riscv/libwrapper.a" -D RISCV_TOOLCHAIN_PATH="${sdk_path}/tools/bin/compiler/riscv/cc_riscv32_musl_b090/cc_riscv32_musl/bin" \ -D PKG_PATH="${mindspore-enterprise-lite-{version}-linux-x64安装目录}" cd build make -j4
在"Micro工程目录/build ”目录中生成算子执行文件,目录如下:
Micro工程目录/build # MCU推理代码目录 ├── CMakeCache.txt ├── CMakeFiles ├── cmake_install.cmake ├── libmicro_runtime.a # 算子运行时静态库 ├── Makefile └── src ├── CMakeFiles ├── cmake_install.cmake ├── libnet.a # 算子定义与实现的静态库 └── Makefile
代码编译成功,屏幕显示结果如下:
[ 50%] Built target net [100%] Built target micro_runtime
将编译产物libnet.a与libmicro_runtime.a上传至海思工具包再次编译得到编译产物*.fwpkg文件。然后,使用海思工具在Windows平台烧录推理,具体步骤请参考对应的application/samples/ai中的readme.md。
基于x86_64平台精度调试¶
本节以mnist.tflite模型为例,介绍在x86_64平台上的编译和部署过程(x86部署可以为板端调试提供精度标杆)。
使用converter_lite工具将开源框架模型转换为Micro工程,请参见“快速入门”章节
须知:在使用converter_lite转换命令时,--fmk选项必须与AI模型的开源框架对应,否则将导致转换失败,且需要配置--encryption=false参数。
micro.cfg的target必须选择x86,且需要按照“开源框架的TFLite/ONNX模型转换为Micro工程”章节中的5场景一进行配置。
切换到Micro工程目录。
#切换到Micro工程目录,假设工程目录叫micro cd $HOME/micro/
Micro工程目录结构如下,其中benchmark目录为x86_64部署的样例工程,调用相关Micro API接口。
micro # 指定的生成代码根目录名称 ├── benchmark # 对模型推理代码进行集成调用的benchmark例程 │ ├── benchmark.c │ ├── calib_output.c │ ├── calib_output.h │ ├── load_input.c │ └── load_input.h ├── CMakeLists.txt # benchmark例程的cmake工程文件 ├── include # 头文件 │ ├── model_handle.h └── src # 模型推理代码目录 ├── allocator.c ├── allocator.h ├── CMakeLists.txt ├── context.c ├── context.h ├── model.c ├── model.h ├── net.cmake ├── tensor.c └── tensor.h
gcc编译生成可执行文件。
切换到converter_lite工具包算子库路径,然后将算子库拷贝到父级目录。
cd "mindspore-enterprise-lite-{version}-linux-x64安装目录"/tools/codegen/lib/cpu 将算子库拷贝到父级目录 cp libnnacl.a libwrapper.a ../
创建编译目录,gcc编译benchmark可执行环境。
#创建并且切换到编译目录 mkdir build && cd build #gcc编译生成可执行文件 cmake -DPKG_PATH="mindspore-enterprise-lite-{version}-linux-x64安装目录" .. make
若Micro工程代码编译成功,屏幕将显示如下结果,此时在“Micro工程目录/build/src/”目录下会生成libnet.a。
[100%] Linking C executable benchmark [100%] Built target benchmark
运行benchmark推理流程,输入bin文件可以从mnist.tar.gz获取,也可以自行构造随机输入。
构造随机输入数据,下面给出生成[0,1]范围内Fp32随机数据的Python参考脚本,输出结果为mnist.bin文件。
须知:随机输入数据可以用于Micro工程推理,也可用于Micro INT8量化校准数据集。
若用户有真实数据集,可转换为Bin格式,无需参考下面的随机数据构造脚本。
#随机输入构造脚本,仅供参考 import numpy as np import os def generate_random_data(output_file, shape=(1, 25, 24, 1), dtype=np.float32): # 生成[0, 1)范围内的随机数 random_data = np.random.uniform(low=0.0, high=1.0, size=shape).astype(dtype) # 手动将部分点设为1.0,确保范围包含1 total_elements = np.prod(shape) if total_elements > 0: # 将最后一个元素设为1.0 random_data.flat[-1] = 1.0 # 再随机选一个元素设为0.0,确保包含0 random_data.flat[np.random.randint(0, total_elements)] = 0.0 # 验证数据范围 min_val = np.min(random_data) max_val = np.max(random_data) assert min_val >= 0.0, f"数据最小值{min_val}小于0" assert max_val <= 1.0, f"数据最大值{max_val}大于1" # 确保输出目录存在 os.makedirs(os.path.dirname(output_file), exist_ok=True) # 保存为二进制文件 with open(output_file, 'wb') as f: random_data.tofile(f) # 输出信息 print(f"数据维度: {random_data.shape}") print(f"数据类型: {random_data.dtype}") print(f"数据范围: [{min_val:.6f}, {max_val:.6f}]") print("数据前5个元素预览:", random_data.flatten()[:5]) if __name__ == "__main__": # 输出文件路径 output_file = "mnist.bin" # 生成并保存数据 generate_random_data(output_file)
运行benchmark,在x86_64平台完成推理。
#benchmark是精度评测的可执行文件,用法为./benchmark "mnist.tflite.ms.bin路径" "net0.bin路径",benchmark第一个参数是输入数据,第二个参数是模型权重文件(模型文件在benchmark目录同级的src/model0目录下)。假设mnist.tflite.ms.bin相对路径为"../../mnist/mnist.tflite.ms.bin",net0.bin相对路径为"net0.bin"。执行命令可参考如下: ./benchmark ../../mnist/mnist.tflite.ms.bin ../src/model0/net0.bin
推理成功,屏幕显示结果应该如下:
=======run benchmark====== ThreadNum: 1. BindMode: 0. input 0: ../../mnist/mnist.tflite.ms.bin Running warm up loops...========run success======= outputs: name: Identity, DataType: 43, Elements: 10, Shape: [1 10 ], Data: 0.000036, 0.000000, 0.009328, 0.000032, 0.000011, 0.000002, 0.000000, 0.000000, 0.990591, 0.000000, ========run success=======
参数说明¶
总体约束¶
针对converter_lite转换工具总体约束如下:
支持ONNX、TFLite开源框架的模型转换,当原始框架类型为ONNX、TFLite时,输入类型应为FP32、INT8、UINT8。
开源框架模型类型应与--fmk配置参数名称必须保持一致(包括大小写)。
在使用全量化转换时,必须构建校准输入数据集,且按照模型的输入名称设置Micro配置项。校准数据集和实际输入格式为BIN(即数据类型为.bin二进制文件),并且该路径下不允许存在其他格式文件。
参数概览¶
须知:
如果通过./converter_lite --help命令查询出的参数未在表1中解释,则说明该参数预留或者适用于其他芯片版本,用户无需关注。
使用converter_lite命令进行Micro工程代码生成时,支持模型量化与非量化,x86_64与RISCV编译,用户可根据实际情况进行选择。
converter_lite参数概览如表1所示,详细说明请参见“基础功能参数”章节。
表 1 converter_lite工具参数概览
convert lite参数名称 |
是否必选 |
参数说明 |
取值范围 |
默认值 |
|---|---|---|---|---|
--help |
否 |
打印全部帮助信息。 |
- |
- |
--fmk=<FMK> |
是 |
输入模型的原始格式。 |
TFLITE/ONNX |
- |
--modelFile=<MODELFILE> |
是 |
输入模型的路径。 |
- |
- |
--outputFile=<OUTPUTFILE> |
是 |
转成Micro工程代码的路径。 |
- |
- |
--configFile=<CONFIGFILE> |
是 |
设置转换Micro工程的配置项。 |
- |
- |
--encryption=<ENCRYPTION> |
是 |
不支持设置,取值范围暂不支持true,使用时必须配置为false。 |
false |
- |
--inputDataFormat |
是 |
设定导出模型的输入format,其中,源模型为ONNX框架应当设置为NCHW,为TFLITE框架应当设置为NHWC。 |
NCHW/NHWC |
- |
--outputDataFormat |
是 |
设定导出模型的输出format,其中源模型为ONNX框架应当设置为NCHW,为TFLITE框架应当设置为NHWC。 |
NCHW/NHWC |
- |
--inputDataType |
是 |
设定导出模型的输入数据类型,自研量化时类型与原始模型保持不变,TFLite第三方量化与量化后数据类型保持一致。 |
FLOAT/INT8/UINT8 |
- |
--outputDataType |
是 |
设定导出模型的输出数据类型,自研量化时类型与原始模型保持不变,TFLite第三方量化与量化后数据类型保持一致。 |
FLOAT/INT8/UINT8 |
- |
--decryptKey |
否 |
解密密钥,Micro不支持 |
- |
- |
--encryptKey |
否 |
加密密钥,Micro不支持 |
- |
- |
--infer |
否 |
预推理功能开关,Micro不支持 |
- |
false |
--fp16 |
否 |
开启fp16推理开关,Micro不支持 |
- |
false |
--optimize |
否 |
Micro仅支持general,不支持额外配置 |
- |
general |
--optimizeTransformer |
否 |
Micro开启Transformer融合,Micro不支持 |
- |
false |
--saveType |
否 |
导出中间IR文件格式,Micro暂不支持其他配置 |
- |
MINDIR_LITE |
--trainModel |
否 |
端侧训练开关,Micro暂不支持 |
- |
false |
--weightFile |
否 |
caffe格式模型配套的weight文件导入,Micro暂不支持 |
- |
- |
--riscvOpt |
否 |
开启RISC-V高性能优化,在优化列表内的算子规格能够有性能提升 |
- |
false |
基础功能参数¶
总体选项¶
--help
功能说明
打印全部帮助信息。
关联参数
无
参数取值
无
推荐配置及收益
无
示例
#切换到converter_lite工具安装目录,配置LD_LIBRARY_PATH环境变量 ./converter_lite --help
依赖约束
无
输入选项¶
--fmk=<FMK>
功能说明
配置输入开源框架模型的原始格式。
关联参数
无
参数取值
TFLite:转换TFLite开源框架模型为Micro工程代码。
ONNX:转换ONNX开源框架模型为Micro工程代码。
参数默认值:无
推荐配置及收益
无
示例
#配置输入开源框架模型的原始格式,模型与fmk对应关系为*.tflite-TFLite;*.onnx->ONNX --fmk=TFLITE --fmk=ONNX
依赖约束
无
--modelFile=<MODELFILE>
功能说明
输入模型的路径。
关联参数
无
参数取值
参数默认值:无
推荐配置及收益
无
示例
#配置开源框架的输入模型路径,例如 --modelFile=$HOME/module/mnist.tflite
依赖约束
无
--configFile=<CONFIGFILE>
功能说明
设置转换Micro工程的配置项。
关联参数
无
参数取值
参数取值参考如表1所示。
须知:Micro配置项表1中未声明的参数不支持或者适用于其他芯片,用户无需关注。
如果不使用全量化,仅配置[micro_param]、enable_micro、target、support_parallel,其中support_parallel将默认配置为false。
如果需要使用全量化,需要配置表1中除debug_mode以外的参数。quant_type需要配置为FULL_QUANT,bit_num默认配置为8,bias_correction默认配置为true,enable_all_ops默认配置为false。
全量化时配置calibrate_path必须符合“input_name_1:input_1_dir,input_name_2:input_2_dir.... ”输入格式,且input_name_1、input_name_2等的输入数量与名称必须与开源框架AI模型的输入数量和名称相符合。
全量化时配置的calibrate_size必须与calibrate_path每个数据集目录元素数量相同。
表 1 micro.cfg配置项参数概览
参数名称
是否必选
参数说明
取值范围
默认值
[micro_param]
是
当前正在设置Micro配置项,用于控制代码生成。
-
-
enable_micro
是
使能convert lite生成Micro工程代码。
true/false
false
target
是
Micro工程代码部署推理平台。
x86/RISCV
x86
support_parallel
否
是否生成多线程推理代码,当前尚未支持多线程即不支持置为true。
true/false
false
debug_mode
否
是否打开调测接口,仅全量化时选择。
true/false
false
[common_quant_param]
否
公共量化参数,仅全量化时选择。
-
-
quant_type
否
设置量化类型,启用全量化时需要配置为FULL_QUANT,仅全量化时选择。
FULL_QUANT/-
-
bit_num
否
设置量化的比特数,目前仅支持8bit量化,仅全量化时选择。
8
-
[data_preprocess_param]
否
校准数据集参数,仅全量化时选择。
-
-
calibrate_path
否
校准数据集路径,该路径下不能存放非bin格式文件,仅全量化时选择。
-
-
calibrate_size
否
校准数据集大小,仅全量化时选择。
必须与calibrate_path数据集数量一致
-
input_type
否
校准数据集格式,启用全量化时需要配置为BIN,仅全量化时选择。
只支持BIN
-
[full_quant_param]
否
全量化参数,仅全量化时选择。
-
-
activation_quant_method
否
激活值量化算法,仅全量化时选择。
只支持MAX_MIN
-
bias_correction
否
是否对量化误差进行校正,仅全量化时选择。
true/false
-
enable_all_ops
否
是否开启进阶量化算子。
默认量化算子(无论是否配置均会开启):Conv Matmul/Gemm(FullyConneted) /Reshape ;
进阶量化算子(需要配置此属性为true才会开启):Maxpool Relu Softmax Mul Add Sub Gather Concat Split AvgPool。
true/false
推荐配置及收益
无
示例
#配置Micro工程配置项绝对路径,例如 --configFile=$HOME/module/micro.cfg
依赖约束
无
输出选项¶
--outputFile=<OUTPUTFILE>
功能说明
转成Micro工程代码的路径
关联参数
无
参数取值
参数默认值:无
推荐配置及收益
无
示例
#Micro工程路径为当前目录的mnist文件夹 --outputFile=mnist #Micro工程路径为当前目录的micro文件夹 --outputFile=.
命令执行完毕后,屏幕会打印类似如下信息:
CONVERT RESULT SUCCESS:0依赖约束
无
算子规格参考¶
本章主要介绍(MindSpore Lite)所支持的算子规格限制,目前主要支持ONNX格式以及TFLite格式的模型,并且支持算子的数据类型主要为int8以及fp32。
说明: Gemm是ONNX框架的矩阵乘法算子,而FullyConnected则是TFLite框架的矩阵乘法算子。目前,int8仅支持量化模型,不支持onnxruntime量化场景。
TFLite算子规格参考¶
Conv2D¶
功能描述
对4D输入进行卷积计算。
参数说明
表 1 Conv2D参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为4D,格式为NHWC。 |
- |
filter |
input |
tensor |
filter张量,维度为4D。 |
规格约束:权重为离线变量 |
bias |
input |
tensor |
bias张量,维度为1D。 |
规格约束:偏置为离线变量 |
output |
output |
tensor |
输出张量,维度为4D,格式为NHWC。 |
- |
dilation_h_factor |
attribute |
int32 |
filter在H方向上的扩张系数。 |
- |
dilation_w_factor |
attribute |
int32 |
filter在W方向上的扩张系数。 |
- |
fused_activation_function |
attribute |
string |
融合的激活函数类型。 |
配置范围:NONE、RELU |
padding |
attribute |
string |
填充类型。 |
配置范围:SAME、VALID |
stride_h |
attribute |
int32 |
filter在H方向上的移动步长。 |
- |
stride_w |
attribute |
int32 |
filter在W方向上的移动步长。 |
- |
MaxPool2D¶
功能描述
对4D输入进行最大池化计算。
参数说明
表 1 MaxPool2D参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为4D,格式为NHWC。 |
- |
output |
output |
tensor |
输出张量,维度为4D,格式为NHWC。 |
- |
filter_height |
attribute |
int32 |
在H方向上的过滤窗口大小。 |
- |
filter_width |
attribute |
int32 |
在W方向上的过滤窗口大小。 |
- |
fused_activation_function |
attribute |
string |
融合的激活函数类型。 |
配置范围:NONE、RELU |
padding |
attribute |
string |
填充类型。 |
配置范围:SAME、VALID |
stride_h |
attribute |
int32 |
filter在H方向上的移动步长。 |
- |
stride_w |
attribute |
int32 |
filter在W方向上的移动步长。 |
- |
FullyConnected¶
功能描述
对2D、3D、4D输入的最后一个维度进行特征映射(类似Onnx规格中Gemm)。
参数说明
表 1 FullyConnected参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
filter |
input |
tensor |
权重张量,维度为2D。 |
规格约束:权重为离线变量 |
bias |
input |
tensor |
偏置张量,维度为1D。 |
规格约束:偏置为离线变量 |
output |
output |
tensor |
输出张量,维度为4D,格式为NHWC。 |
- |
fused_activation_function |
attribute |
string |
融合的激活函数类型。 |
配置范围:NONE、RELU |
weights_format |
attribute |
string |
权重张量在内存中的存储布局。 |
配置范围:DEFAULT,不支持其他配置 |
keep_num_dims |
attribute |
bool |
是否对输入展平为2D进行计算。 |
- |
asymmetric_quantize_inputs |
attribute |
bool |
是否对输入进行非对称量化。 |
- |
BatchMatmul¶
功能描述
对两个2D/3D/4D输入张量进行矩阵乘法运算。
参数说明
说明: BatchMatmul暂时不支持广播机制,x倒数两维为计算维度[M, K],y倒数两维为计算维度[K, N],K大小必须保持一致。计算维度前,维度必须保持一致。
表 1 BatchMatmul参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度为3D/4D,格式分别为NWC、NHWC。 |
- |
y |
input |
tensor |
权重张量,维度为3D/4D,格式分别为NWC、NHWC。 |
- |
output |
output |
tensor |
输出张量,维度为3D/4D,格式分别为NWC、NHWC。符合矩阵乘法运算规则。 |
- |
adj_x |
attribute |
bool |
是否对x的最后两个维度进行转置。 |
- |
adj_y |
attribute |
bool |
是否对y的最后两个维度进行转置。 |
- |
asymmetric_quantize_inputs |
attribute |
bool |
BatchMatmul是否对输入进行非对称量化。 |
- |
Softmax¶
功能描述
计算最后一维的归一化Softmax概率分布。
参数说明
说明: 受TFLite限制,Softmax仅支持在最后一维上进行计算。
表 1 Softmax参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D / 3D / 4D,格式分别为ND、NWC、NHWC。 |
- |
output |
output |
tensor |
输出张量,维度为2D / 3D / 4D,格式分别为ND、NWC、NHWC。 |
- |
beta |
attribute |
float |
对输入的缩放系数。 |
配置范围:暂仅支持beta=1.0的情况 |
Relu¶
功能描述
对输入张量做Relu激活函数运算。
参数说明
表 1 Relu参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
Tanh¶
功能描述
对输入张量做Tanh激活函数运算。
参数说明
表 1 Tanh参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
Logistic (Sigmoid)¶
功能描述
对输入张量做Sigmoid激活函数运算。
参数说明
表 1 Logistic参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
Reshape¶
功能描述
改变Tensor的Shape,但不改变其排布。
参数说明
表 1 Reshape参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
shape |
input |
tensor (int32) |
Shape张量,转换后的Shape。 |
规格约束:所有元素之积与input包含的元素个数相等 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
Mul¶
功能描述
计算两个矩阵逐点相乘。
参数说明
说明: Mul支持广播特性。双向广播需要在转换命令中明确配置inputDataFormat和outputDataFormat参数。
表 1 Mul参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
lhs |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
rhs |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
fused_activation_function |
attribute |
string |
融合的激活函数类型。 |
配置范围:NONE、RELU |
Add¶
功能描述
计算两个矩阵逐点相加。
参数说明
说明: Add支持广播特性。双向广播需要在转换命令中明确配置inputDataFormat和outputDataFormat参数。
表 1 Add参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
lhs |
input |
tensor |
左输入张量,维度为2D/3D/4D,格式分别为ND、NWC,NHWC。 |
- |
rhs |
input |
tensor |
右输入张量,维度为2D/3D/4D,格式分别为ND,NWC、NHWC。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND,NWC、NHWC。 |
- |
fused_activation_function |
attribute |
string |
融合的激活函数类型。 |
配置范围:NONE、RELU |
Sub¶
功能描述
计算两个矩阵逐点相减。
参数说明
说明: Sub支持广播特性。双向广播需要在转换命令中明确配置inputDataFormat和outputDataFormat参数。
表 1 Sub参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
lhs |
input |
tensor |
左输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
rhs |
input |
tensor |
右输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
fused_activation_function |
attribute |
string |
融合的激活函数类型。 |
配置范围:NONE、RELU |
Gather¶
功能描述
根据指定索引,从输入张量的指定轴上提取元素,组合成新张量
参数说明
表 1 Gather参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
params |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
indices |
input |
tensor (int32) |
索引张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
axis |
attribute |
int |
输入张量被切分的轴。 |
-rank(value)<=axis<rank(value),rank为张量的秩 |
batch_dims |
attribute |
int |
将索引的前batch_dims个轴作为batch轴,切分行为有所改变。 |
仅支持为batch_dims为0的情况 |
Split¶
Split算子在TFLITE框架中包含tfl.Split、tfl.SplitV等api,其中tfl.Split表示均匀划分,tfl.SplitV自定义非均匀划分。
Split¶
功能描述
对张量分割按照某一轴平均切分成若干份。
参数说明
表 1 Split参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
value |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
outputs |
output |
varList(tensor) |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
num_splits |
attribute |
int |
平均分割的数量。 |
(0, split_dim] ,且 num_splits需要能被指定轴整除 |
split_dim |
attribute |
int |
指定被分割的轴。 |
维度索引 |
SplitV¶
功能描述
对张量分割按照某一轴非平均切分成若干份。
参数说明
表 1 SplitV参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
value |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
outputs |
output |
varList(tensor) |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
num_splits |
attribute |
int |
分割的数量。 |
- |
size_splits |
attribute |
tensor |
具体每一份分割的维度。 |
[n1, n2, ..., ni],∑ni = axis,n > 0 |
split_dim |
attribute |
int |
被分割的轴。 |
-rank(value)<=axis<rank(value),rank为张量的秩 |
Concatenation¶
功能描述
将多个张量拼接成某一个张量。
参数说明
表 1 Concatenation参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
values |
input |
varList(tensor) |
输入张量列表,内部各张量维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
规格约束:列表中各张量在指定轴上元素个数相等 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
axis |
attribute |
int |
指定沿着哪个轴进行连接。 |
规格约束:-rank(value)<=axis<rank(value),rank为张量的秩 |
fused_activation_function |
attribute |
string |
融合的激活函数类型。 |
配置范围:NONE、RELU |
AveragePool2D¶
功能描述
对4D输入进行平均池化计算。
参数说明
表 1 AveragePool2D参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为4D,格式为NHWC。 |
- |
output |
output |
tensor |
输出张量,维度为4D,格式为NHWC。 |
- |
filter_height |
attribute |
int32 |
在H方向上的过滤窗口大小。 |
- |
filter_width |
attribute |
int32 |
在W方向上的过滤窗口大小。 |
- |
fused_activation_function |
attribute |
string |
融合的激活函数类型。 |
配置范围:NONE、RELU |
padding |
attribute |
string |
填充类型。 |
配置范围:SAME、VALID |
stride_h |
attribute |
int32 |
filter在H方向上的移动步长。 |
- |
stride_w |
attribute |
int32 |
filter在W方向上的移动步长。 |
- |
Tile¶
功能描述
对2D/3D/4D输入沿指定维度做复制扩展。
参数说明
表 1 Tile参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NWC/NHWC。 |
- |
multiples |
input |
list(int) |
指定每个维度复制次数。 |
规格约束:multiples为离线常量 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NWC/NHWC。 |
- |
Pad¶
Pad算子在TFLITE框架中包含tfl.Pad、tfl.PadV2、tfl.Mirror_Pad等api,其中tfl.Pad表示零填充,tfl.Padv2表示自定义常量填充,tfl.Mirror_Pad表示镜像反射填充。
Pad¶
功能描述
对输入张量边界做零填充。
参数说明
表 1 Pad参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NWC/NHWC。 |
规格约束:int8量化场景仅支持4D张量输入 |
padding |
input |
list(int) |
指定各输入维度填充范围。 |
规格约束:padding为离线常量,padding[i]<input_dim[i] |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NWC/NHWC。 |
- |
PadV2¶
功能描述
对输入张量边界做自定义常量填充。
参数说明
表 1 PadV2参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NWC/NHWC。 |
规格约束:int8量化场景仅支持4D张量输入 |
padding |
input |
list(int) |
指定各输入维度填充范围。 |
规格约束:padding为离线常量,padding[i]<input_dim[i] |
constant_values |
input |
int32 |
自定义填充常数。 |
规格约束:constant_values为离线常量 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NWC/NHWC。 |
- |
Mirror_Pad¶
功能描述
对输入张量边界做镜像反射填充。
参数说明
表 1 Mirror_Pad参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NWC/NHWC。 |
- |
pad |
input |
list(int) |
指定各输入维度填充范围。 |
规格约束:pad为离线常量,pad[i]<input_dim[i] |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NWC/NHWC。 |
- |
mode |
attribute |
string |
填充模式,指定边界填充方式。 |
配置范围:REFLECT、SYMMETRIC |
Resize¶
Resize算子在TFLITE框架中包含tfl.Resize_Bilinear、tfl.Resize_Nearest_Neighbor等api,其中tfl.Pad表示零填充,tfl.Resize_Bilinear表示双线性插值缩放,tfl.Resize_Nearest_Neighbor表示最近邻插值缩放。
Resize_Bilinear¶
功能描述
对输入张量做双线性插值缩放。
参数说明
表 1 Resize_Bilinear参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为4D,格式为NHWC。 |
- |
size |
input |
list(int) |
指定输出张量的目标尺寸。 |
规格约束:离线常量,NC维度与输入张量保持一致 |
output |
output |
tensor |
输出张量,维度为4D,格式为NHWC。 |
- |
align_corners |
attribute |
bool |
缩放填充模式,是否对齐输入输出的角落像素。 |
配置范围:true、false,与half_pixel_centers必须配置一个且仅一个配置为true |
half_pixel_centers |
attribute |
bool |
缩放填充模式,像素坐标中心是否取(0.5, 0.5)计算。 |
配置范围:true、false |
Resize_Nearest_Neighbor¶
功能描述
对输入张量做最近邻插值缩放。
参数说明
表 1 Resize_Nearest_Neighbor参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为4D,格式为NHWC。 |
- |
size |
input |
list(int) |
指定输出张量的目标尺寸。 |
规格约束:离线常量,NC维度与输入张量保持一致 |
output |
output |
tensor |
输出张量,维度为4D,格式为NHWC。 |
- |
align_corners |
attribute |
bool |
缩放填充模式,是否对齐输入输出的角落像素。 |
配置范围:true、false,与half_pixel_centers必须配置一个且仅一个配置为true |
half_pixel_centers |
attribute |
bool |
缩放填充模式,像素坐标中心是否取(0.5, 0.5)计算。 |
配置范围:true、false |
Squeeze¶
功能描述
对输入张量进行shape压缩操作。
参数说明
表 1 Squeeze参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度不限制。 |
- |
output |
output |
tensor |
输出张量,维度不限制。 |
- |
squeeze_dims(可选) |
attribute |
list(int) |
被压缩的轴列表。 |
-Rank(tensor) <= axis < Rank(tensor) |
ExpandDims¶
功能描述
对输入张量进行shape扩展操作。
参数说明
表 1 ExpandDims参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度不限制。 |
- |
output |
output |
tensor |
输出张量,维度不限制。 |
- |
dim |
attribute |
int |
被扩展的轴。 |
-Rank(output) <= axis < Rank(output) |
Abs¶
功能描述
对张量的每个元素做绝对值运算。
参数说明
表 1 Abs参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
- |
Ceil¶
功能描述
对张量中的每个元素做向上取整操作。
参数说明
表 1 Ceil参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
- |
Cos¶
功能描述
对张量中的每个元素做余弦操作。
参数说明
表 1 Cos参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
[-1, 1] |
Exp¶
功能描述
对张量中的每个元素做指数计算操作。
参数说明
表 1 Exp参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
(0, 正无穷) |
Floor¶
功能描述
对张量中的每个元素做向下取整操作。
参数说明
表 1 Floor参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
- |
Log¶
功能描述
对张量中的每个元素做对数计算操作(底数值为e)。
参数说明
表 1 Log参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
(0, 正无穷) |
y |
output |
tensor |
输出张量,维度不限制。 |
- |
Round¶
功能描述
对张量中的每个元素做四舍五入操作。
参数说明
表 1 Round参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
- |
Rsqrt¶
功能描述
对张量中的每个元素做平方根倒数计算操作。
参数说明
表 1 Rsqrt参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
(0, 正无穷) |
y |
output |
tensor |
输出张量,维度不限制。 |
(0, 正无穷) |
Sin¶
功能描述
对张量中的每个元素做正弦计算操作。
参数说明
表 1 Sin参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
[-1, 1] |
Sqrt¶
功能描述
对张量中的每个元素做平方根计算操作。
参数说明
表 1 Sqrt参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
[0, 正无穷) |
y |
output |
tensor |
输出张量,维度不限制。 |
[0, 正无穷) |
Square¶
功能描述
对张量中的每个元素做平方计算操作。
参数说明
表 1 Square参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
- |
L2Normalization¶
功能描述
沿指定轴,用L2范数对输入张量执行归一化计算。
参数说明
表 1 L2Normalization参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
fused_activation_function |
attribute |
string |
融合的激活函数类型。 |
配置范围:NONE、RELU、RELU6 |
Slice¶
Slice算子在TFLITE框架中包含tfl.slice、tfl.strided_slice等api,其中tfl.slice为连续提取子张量,tfl.strided_slice可以通过指定步长、掩码等方式更灵活地进行提取。
Slice¶
功能描述
从输入张量中沿指定轴连续提取子张量。
参数说明
Slice参数概览
表 1 Slice参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NWC/NHWC。 |
- |
begins |
input |
tensor |
维度为1D,对应各维度的起始索引。 |
规格约束:begins为离线常量 |
size |
input |
tensor |
维度为1D,各维度要提取的元素个数。size[i]=-1时表示取i轴上从begins[i]开始的所有元素。 |
规格约束:size为离线常量 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NWC/NHWC。 |
- |
StridedSlice¶
功能描述
从输入张量中沿指定轴提取子张量。
参数说明
表 1 StridedSlice参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NWC/NHWC。 |
- |
begin |
input |
tensor |
维度为1D,对应各维度的起始索引。 |
规格约束:begin为离线常量 |
end |
input |
tensor |
维度为1D,对应各维度的结束索引。 |
规格约束:end为离线常量 |
strides |
input |
tensor |
维度为1D,对应各维度的切片步长。 |
规格约束:strides为离线常量 |
output |
output |
tensor |
输出张量,输出维度和尺寸由切片逻辑及掩码决定。 |
- |
begin_mask |
attribute |
int |
第 i 维度对应位为 1 时,忽略该维度的 begin[i],改用维度起始边界(正向切片 = 0,反向切片 = 维度长度 - 1)。 |
- |
end_mask |
attribute |
int |
第 i 维度对应位为 1 时,忽略该维度的 end[i],改用维度结束边界(正向 = 维度长度,反向切片 =-1)。 |
- |
ellipsis_mask |
attribute |
int |
第 i 维度对应位为 1 时,对应维度及后续未显式指定的维度完整保留。 |
规格约束:仅允许一个二进制位为1 |
new_axis_mask |
attribute |
int |
第 i 维度对应位为 1 时,在输出中插入长度为 1 的新维度。 |
- |
shrink_axis_mask |
attribute |
int |
第 i 维度对应位为 1 时,在输出中移除该维度。 |
- |
offset |
attribute |
bool |
取值为true:end输入表示切片长度。 取值为false:直接使用原始索引。 |
暂不支持配置,默认为false |
DepthwiseConv2D¶
功能描述
对4D输入进行深度可分离卷积计算。
参数说明
表 1 DepthwiseConv2D参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为4D,格式为NHWC。 |
- |
filter |
input |
tensor |
filter张量,维度为4D。 |
规格约束:权重为离线常量 |
bias |
input |
tensor |
bias张量,维度为1D。 |
规格约束:偏置为离线常量 |
output |
output |
tensor |
输出张量,维度为4D,格式为NHWC。 |
- |
dilation_h_factor |
attribute |
int32 |
filter在H方向上的扩张系数。 |
- |
dilation_w_factor |
attribute |
int32 |
filter在W方向上的扩张系数。 |
- |
fused_activation_function |
attribute |
string |
融合的激活函数类型。 |
配置范围:NONE、RELU |
padding |
attribute |
string |
填充类型。 |
配置范围:SAME、VALID |
stride_h |
attribute |
int32 |
filter在H方向上的移动步长。 |
- |
stride_w |
attribute |
int32 |
filter在W方向上的移动步长。 |
- |
depth_multiplier |
attribute |
int32 |
深度乘法因子,控制通道数缩放。 |
规格约束:INT8量化场景仅支持配置为1 |
Transpose¶
功能描述
对输入张量进行转置。
参数说明
表 1 Transpose参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NHWC。 |
- |
perm |
input |
tensor |
输入张量的维度重排顺序。 |
规格约束:不支持perm=[0,3,1,2]、[0,2,3,1]的Transpose单算子转换 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NHWC。 |
- |
ArgMax¶
功能描述
在张量的指定维度上,计算并返回最大值对应的位置索引。
参数说明
说明: 仅支持float类型,不支持int8类型。
表 1 ArgMax参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NHWC。 |
- |
dim |
input |
tensor |
指定在张量中执行计算逻辑的维度。 |
规格约束:-rank(input)<=axis<rank(input),rank为张量的秩 |
output |
output |
tensor (int32) |
输出张量,维度为1D/2D/3D,格式为N/ND/NCW。 |
- |
output_type |
attribute |
TensorType |
指定算子输出张量的元素数据类型。 |
规格约束:仅支持配置为tf.int32 |
ArgMin¶
功能描述
在张量的指定维度上,计算并返回最小值对应的位置索引。
参数说明
说明: 仅支持float类型,不支持int8类型。
表 1 ArgMin参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NHWC。 |
- |
dim |
input |
tensor |
指定在张量中执行计算逻辑的维度。 |
规格约束:-rank(input)<=axis<rank(input),rank为张量的秩 |
output |
output |
tensor (int32) |
输出张量,维度为1D/2D/3D,格式为N/ND/NCW。 |
- |
output_type |
attribute |
TensorType |
指定算子输出张量的元素数据类型。 |
规格约束:仅支持配置为tf.int32 |
Div¶
功能描述
对两输入张量进行除法运算。
参数说明
表 1 Div参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
lhs |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
rhs |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
fused_activation_function |
attribute |
string |
融合的激活函数类型。 |
配置范围:NONE、RELU |
ReduceMax¶
功能描述
对指定维度的张量进行最大值归约计算。
参数说明
表 1 ReduceMax参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
axes |
input |
tensor |
指定归约的轴。 |
规格约束:离线常量,元素范围[-rank(input), rank(input)) |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
keep_dims |
attribute |
bool |
是否需要保留归约轴的维度。 |
配置范围:true/false |
ReduceMin¶
功能描述
对指定维度的张量进行最小值归约计算。
参数说明
表 1 ReduceMin参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
axes |
input |
tensor |
指定归约的轴。 |
规格约束:离线常量,元素范围[-rank(input), rank(input)) |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
keep_dims |
attribute |
bool |
是否需要保留归约轴的维度。 |
配置范围:true/false |
Sum¶
功能描述
对指定维度的张量进行求和归约计算。
参数说明
表 1 Sum参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
axes |
input |
tensor |
指定归约的轴。 |
规格约束:离线常量,元素范围[-rank(input), rank(input)) |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
keep_dims |
attribute |
bool |
是否需要保留归约轴的维度。 |
配置范围:true/false |
Mean¶
功能描述
对指定维度的张量进行均值归约计算。
参数说明
表 1 Mean参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
axes |
input |
tensor |
指定归约的轴。 |
规格约束:离线常量,元素范围[-rank(input), rank(input)) |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
- |
keep_dims |
attribute |
bool |
是否需要保留归约轴的维度。 |
配置范围:true/false |
Cast¶
功能描述
对输入张量进行数据类型的转换。
参数说明
说明: Cast算子不支持量化。
表 1 Cast参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
数据类型仅支持float32、uint8、int8、int32 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
数据类型仅支持float32、uint8、int8、int32 |
Quantize¶
功能描述
对输入张量进行量化操作。
参数说明
说明: Quantize算子不支持量化。
表 1 Quantize参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
int8, uint8 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
float32, int8, uint8 |
Dequantize¶
功能描述
对输入张量进行量化操作。
参数说明
说明: Dequantize算子不支持量化。
表 1 Dequantize参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
float32, int8, uint8 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NWC、NHWC。 |
int8, uint8 |
ONNX算子规格参考¶
Conv¶
功能描述
基于一个filter模板对3D或4D输入进行卷积计算。
参数说明
表 1 Conv参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
X |
input |
tensor |
输入张量,维度为3D或4D,格式为NCW/NCHW。 |
- |
W |
input |
tensor |
权重张量,维度为3D或4D。 |
规格约束:权重为离线常量 |
B |
input |
tensor |
偏置张量,维度为1D。 |
规格约束:偏置为离线常量 |
Y |
output |
tensor |
输出张量,维度为3D或4D,格式为NCW/NCHW。 |
- |
auto_pad |
attribute |
string |
指定padding的类型。 |
规格约束:仅支持NOTSET |
dilations |
attribute |
list(int) |
每个轴上的扩张系数。 |
- |
group |
attribute |
int |
在输入输出channel上划分的分组个数。 |
规格约束:仅支持输入为1的情况 |
kernel_shape |
attribute |
list(int) |
kernel沿各轴的大小。 |
- |
pads |
attribute |
list(int) |
各轴前后填充零的个数。 |
- |
strides |
attribute |
list(int) |
各个方向上kernel的移动步长。 |
- |
MaxPool¶
功能描述
对3D或4D输入进行最大池化计算。
参数说明
说明: Maxpool双输出规格暂不支持。
表 1 MaxPool参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
X |
input |
tensor |
输入张量,维度为3D或4D,格式为NCW/NCHW。 |
- |
Y |
output |
tensor |
输出张量,维度为3D或4D,格式为NCW/NCHW。 |
- |
auto_pad |
attribute |
string |
指定padding的类型。 |
配置范围:NOTSET、SAME_UPPER、SAME_LOWER、VALID |
ceil_mode |
attribute |
int |
输出形状的取整方式。 |
规格约束:仅支持floor |
dilations |
attribute |
list(int) |
每个轴上的扩张系数。 |
规格约束:仅支持1 |
kernel_shape |
attribute |
list(int) |
kernel沿各轴的大小。 |
- |
pads |
attribute |
list(int) |
各轴前后填充零的个数。 |
- |
storage_order |
attribute |
int |
张量存储主序。 |
规格约束:仅支持0 |
strides |
attribute |
list(int) |
各个方向上kernel的移动步长。 |
- |
Gemm¶
功能描述
对两个2D张量进行矩阵乘积运算。
参数说明
表 1 Gemm参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
A |
input |
tensor |
输入张量,维度为2D,格式为ND。 |
- |
B |
input |
tensor |
权重张量,维度为2D。 |
规格约束:仅支持离线变量 |
C |
input |
tensor |
偏置张量,维度为1D。 |
规格约束:仅支持离线变量 |
Y |
output |
tensor |
输出张量,维度为2D,格式为ND。 |
- |
alpha |
attribute |
float |
A×B张量的缩放系数。 |
规格约束:仅支持1.0 |
beta |
attribute |
float |
C的乘数。 |
规格约束:仅支持0.0 |
transA |
attribute |
int |
决定输入A是否转置。 |
配置范围:0、1 |
transB |
attribute |
int |
决定输入B是否转置。 |
配置范围:0、1 |
Matmul¶
功能描述
对两个2D/3D/4D张量进行矩阵乘积运算。
参数说明
说明: Matmul不支持广播场景。
表 1 Matmul参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
A |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
B |
input |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
Y |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
Softmax¶
功能描述
计算指定维度的归一化Softmax概率分布。
参数说明
说明: 当Softmax维度较大时,int8量化损失较大,推荐使用fp32模式的算子,关闭cfg中的enable_all_ops选项(仅保留矩阵运算类算子的量化)。
表 1 Softmax参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
axis |
attribute |
int |
Softmax的计算轴。 |
-rank(input)<=axis<rank(input),rank为张量的秩 |
Relu¶
功能描述
对输入张量做Relu激活函数运算。
参数说明
表 1 Relu参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
X |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND/NCL/NCHW。 |
- |
Y |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND/NCW/NCHW。 |
- |
Tanh¶
功能描述
对输入张量做Tanh激活函数运算。
参数说明
表 1 Tanh参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
X |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND/NCW/NCHW。 |
- |
Y |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND/NCW/NCHW。 |
- |
Sigmoid¶
功能描述
对输入张量做Sigmoid激活函数运算。
参数说明
表 1 Sigmoid参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
X |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND/NCW/NCHW。 |
- |
Y |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND/NCW/NCHW。 |
- |
Reshape¶
功能描述
改变Tensor的Shape,但不改变其排布。
参数说明
表 1 Reshape参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NCW、NCHW。 |
- |
shape |
input |
tensor (int64) |
Shape张量,转换后的Shape。 |
所有元素之积与input包含的元素个数相等 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NCW、NCHW。 |
- |
allowzero |
attribute |
int |
判断是否对目标形状做适配(默认0)。 |
仅支持0 |
Mul¶
功能描述
计算两个矩阵逐点相乘。
参数说明
说明: Mul支持广播特性。双向广播需要在转换命令中明确配置inputDataFormat和outputDataFormat参数。
表 1 Mul参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
A |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
B |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
C |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
Add¶
功能描述
计算两个矩阵逐点相加。
参数说明
说明: Add支持广播特性。双向广播需要在转换命令中明确配置inputDataFormat和outputDataFormat参数。
表 1 Add参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
A |
input |
tensor |
左输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
B |
input |
tensor |
右输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
C |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
Sub¶
功能描述
计算两个矩阵逐点相减。
参数说明
说明: Sub支持广播特性。双向广播需要在转换命令中明确配置inputDataFormat和outputDataFormat参数。
表 1 Sub参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
A |
input |
tensor |
左输入张量,维度为2D/3D/4D,格式分别为ND/NCW/NCHW。 |
- |
B |
input |
tensor |
右输入张量,维度为2D/3D/4D,格式分别为ND/NCW/NCHW。 |
- |
C |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
Gather¶
功能描述
根据指定索引,从输入张量的指定轴上提取元素,组合成新张量。
参数说明
表 1 Gather参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NCW、NCHW。 |
- |
index |
input |
tensor (int32) |
索引张量,维度为2D/3D/4D,格式分别为ND、NCW、NCHW。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NCW、NCHW。 |
- |
axis |
attribute |
int |
输入张量被切分的轴。 |
-rank(data)<=axis<rank(data),rank为张量的秩 |
Split¶
功能描述
对张量分割按照某一轴平均或非平均切分成若干份。
参数说明
表 1 Split参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度为2D/3D/4D,格式分别为ND、NCW、NCHW。 |
- |
outputs |
output |
varList(tensor) |
输出张量,维度为2D/3D/4D,格式分别为ND、NCW、NCHW。 |
- |
num_outputs |
attribute |
int |
分割的数量。 |
(0, split_dim] |
axis |
attribute |
int |
被分割的轴。 |
维度索引 |
split |
attribute |
tensor |
具体每一份分割的维度。 |
[n1, n2, ..., ni],∑ni = 轴的值,n > 0 |
Concat¶
功能描述
将多个张量拼接成某一个张量。
参数说明
表 1 Concat参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
inputs |
input |
varList(tensor) |
输入张量列表,内部各张量维度为2D/3D/4D,格式分别为ND、NCW、NCHW。 |
规格约束:列表中各张量在指定轴上元素个数相等 |
concat_result |
output |
tensor |
输出张量,维度为2D/3D/4D,格式分别为ND、NCW、NCHW。 |
- |
axis |
attribute |
int |
指定沿着哪个轴进行连接。 |
规格约束:-rank(data)≤axis<rank(data),rank为张量的秩 |
AveragePool¶
功能描述
对3D或4D输入进行平均池化计算。
参数说明
表 1 AveragePool参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
X |
input |
tensor |
输入张量,维度为3D或4D,格式为NCW/NCHW。 |
- |
Y |
output |
tensor |
输出张量,维度为3D或4D,格式为NCW/NCHW。 |
- |
auto_pad |
attribute |
string |
指定padding的类型。 |
配置范围:NOTSET、SAME_UPPER、SAME_LOWER、VALID |
ceil_mode |
attribute |
int |
输出形状的取整方式。 |
仅支持floor |
dilations |
attribute |
list(int) |
每个轴上的扩张系数。 |
仅支持1 |
kernel_shape |
attribute |
list(int) |
kernel沿各轴的大小。 |
- |
pads |
attribute |
list(int) |
各轴前后填充零的个数。 |
- |
storage_order |
attribute |
int |
张量存储主序。 |
仅支持0 |
strides |
attribute |
list(int) |
各个方向上kernel的移动步长。 |
- |
InstanceNormalization¶
功能描述
对3D输入张量做归一化计算。
参数说明
说明: 暂时只支持1D,仅支持float类型,暂不支持int8类型。
表 1 InstanceNormalization参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为3D,格式为NCW。 |
- |
scale |
input |
tensor |
输入张量的放缩系数,维度为1D。 |
- |
B |
input |
tensor |
偏置向量,维度为1D。 |
- |
output |
output |
tensor |
输出张量,维度为3D,格式为NCW。 |
- |
epsilon |
attribute |
float |
用于避免除零溢出(默认1e-5)。 |
- |
LSTM¶
功能描述
一种循环神经网络,用于捕捉输入的时序数据长期依赖关系。
参数说明
说明: 仅支持float类型,暂不支持int8类型。
表 1 LSTM参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
X |
input |
tensor |
输入时序数据,维度为3D,格式为NCW。 |
规格约束:作为在线变量 |
W |
input |
tensor |
门的权重张量,维度为3D,格式为NCW。 |
规格约束:离线常量 |
R |
input |
tensor |
循环权重张量,维度为3D,格式为NCW。 |
规格约束:离线常量 |
B |
input |
tensor |
输入门偏置张量,维度为2D,格式为ND。 |
规格约束:离线常量 |
sequence_lens |
input |
tensor |
确定每个批数据中时序长度。 |
暂不支持配置 |
initial_h |
input |
tensor |
隐藏层初始值,维度为3D,格式为NCW。 |
规格约束:作为在线变量 |
initial_c |
input |
tensor |
细胞层初始值,维度为3D,格式为NCW。 |
规格约束:作为在线变量 |
P |
input |
tensor |
窥视孔权重向量。 |
暂不支持配置 |
Y |
output |
tensor |
隐藏层所有中间输出值张量拼接后的向量,维度为4D,格式为NCHW。 |
规格约束:作为在线输出变量 |
Y_h |
output |
tensor |
隐藏层输出向量,维度为3D,格式为NCW。 |
规格约束:作为在线输出变量 |
Y_c |
output |
tensor |
细胞层输出向量,维度为3D,格式为NCW。 |
规格约束:作为在线输出变量 |
activation_alpha |
attribute |
list(float) |
对LSTM激活函数结果做放缩(默认0.01)。 |
- |
activation_beta |
attribute |
list(float) |
对LSTM激活函数结果做偏置(默认0.01)。 |
- |
activations |
attribute |
list(string) |
LSTM激活函数类型。 |
暂不支持配置 |
clip |
attribute |
float |
梯度裁剪阈值。 |
暂不支持配置 |
direction |
attribute |
string |
指定LSTM处理输入数据的方式(默认'forward')。 |
暂不支持配置 |
hidden_size |
attribute |
int |
隐藏层大小。 |
- |
input_forget |
attribute |
int |
是否对输入和遗忘门进行耦合(默认0)。 |
暂不支持配置 |
layout |
attribute |
int |
确定输入数据的排布格式,取值范围0或1(默认0)。 |
暂不支持配置 |
Tile¶
功能描述
对2D/3D/4D输入沿指定维度做复制扩展。
参数说明
表 1 Tile参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
repeats |
input |
list(int) |
指定每个维度复制次数。 |
规格约束:repeats为离线常量 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
Pad¶
功能描述
对输入张量边界做填充。
参数说明
表 1 Pad参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
规格约束:mode=constant的int8量化场景仅支持4D张量输入 |
pads |
input |
list(int) |
指定各输入维度填充范围。 |
规格约束:pads为离线常量,pads[i]<input_dim[i] pads[i]非负 |
constant_value |
input |
int |
自定义填充常量。 |
规格约束:constant_value为离线常量 |
axes |
input |
list(int) |
指定需要填充的轴。 |
暂不支持配置 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
mode |
attribute |
string |
指定填充模式。 |
配置范围:constant、reflect、edge |
Resize¶
功能描述
对输入张量按照指定填充模式做缩放。
参数说明
表 1 Resize参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
X |
input |
tensor |
输入张量,维度为4D,格式为NCHW。 |
- |
roi |
input |
list(int) |
指定每个维度复制次数。 |
暂不支持配置 |
scales |
input |
list(float) |
自定义填充常量。 |
规格约束:离线常量,NC轴保持1.0。fp32仅支持out_dim为整数,int8不支持配置,scales为离线常量,与sizes必须配置且仅配置一个 |
sizes |
input |
list(int) |
指定需要填充的轴。 |
规格约束:离线常量,NC轴同输入张量保持一致,sizes为离线常量 |
Y |
output |
tensor |
输出张量,维度为4D,格式为NCHW。 |
- |
antialias |
attribute |
int32 |
默认值:0。抗锯齿开关,用于平滑缩小图像边缘锯齿。 |
暂不支持配置 |
axes |
attribute |
list(int) |
指定缩放的维度轴索引。 |
暂不支持配置 |
coordinate_transformation_mode |
attribute |
string |
默认值:"half_pixel"。指定坐标转换模式,控制像素映射关系。 |
配置范围: 'half_pixel'、"align_corners"、"asymmetric" |
cubic_coeff_a |
attribute |
float |
默认值:"-0.75"。三次插值系数,影响插值平滑程度。 |
暂不支持配置 |
exclude_outside |
attribute |
int |
默认值:"0"。边界处理开关,是否排除外部像素。 |
暂不支持配置 |
extrapolation_value |
attribute |
float |
默认值:"0.0"。外推填充值,越界时使用的数值。 |
暂不支持配置 |
keep_aspect_ratio_policy |
attribute |
string |
默认值:"stretch"。保持高宽比策略,缩放比例计算方式。 |
暂不支持配置 |
mode |
attribute |
string |
默认值:"nearest"。指定缩放插值模式。 |
配置范围: "nearest"、"linear" |
nearest_mode |
attribute |
string |
默认值:"round_prefer_floor"。 最近邻插值模式下取整函数。 |
配置范围: "round_prefer_floor"、"round_prefer_ceil"、"floor" |
Squeeze¶
功能描述
对输入张量进行shape压缩操作,被压缩维度的dim值必须为1。
参数说明
表 1 Squeeze参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度不限制。 |
- |
squeezed |
output |
tensor |
输出张量,维度不限制。 |
- |
axes(可选) |
attribute |
list(int) |
被压缩的轴列表。 |
-Rank(tensor) <= axis < Rank(tensor) |
Unsqueeze¶
功能描述
对多维Tensor进行shape扩展。
参数说明
表 1 Unsqueeze参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度不限制。 |
- |
expanded |
output |
tensor |
输出张量,维度不限制。 |
- |
axes(可选) |
attribute |
list(int) |
被扩展的轴列表。 |
-Rank(expanded) <= axis < Rank(expanded) |
Flatten¶
功能描述
对多维Tensor进行维度展平。
参数说明
表 1 Flatten参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度不限制。 |
- |
flattened |
output |
tensor |
输出张量,维度不限制。 |
- |
axis |
attribute |
int |
展平终止维度 (不包括),默认为1。 |
-Rank(tensor) <= axis <= Rank(tensor) |
Abs¶
功能描述
对张量的每个元素做绝对值运算。
参数说明
表 1 Abs参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
- |
Ceil¶
功能描述
对张量中的每个元素做向上取整操作。
参数说明
表 1 Ceil参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
- |
Cos¶
功能描述
对张量中的每个元素做余弦操作。
参数说明
表 1 Cos参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
[-1, 1] |
Exp¶
功能描述
对张量中的每个元素做指数计算操作。
参数说明
表 1 Exp参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
(0, 正无穷) |
Floor¶
功能描述
对张量中的每个元素做向下取整操作。
参数说明
表 1 Floor参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
- |
Log¶
功能描述
对张量中的每个元素做对数计算操作(底数值为e)。
参数说明
表 1 Log参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
(0, 正无穷) |
y |
output |
tensor |
输出张量,维度不限制。 |
- |
Round¶
功能描述
对张量中的每个元素做四舍五入操作。
参数说明
表 1 Round参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
- |
Sin¶
功能描述
对张量中的每个元素做正弦计算操作。
参数说明
表 1 Sin参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
- |
y |
output |
tensor |
输出张量,维度不限制。 |
[-1, 1] |
Sqrt¶
功能描述
对张量中的每个元素做平方根计算操作。
参数说明
表 1 Sqrt参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
x |
input |
tensor |
输入张量,维度不限制。 |
[0, 正无穷) |
y |
output |
tensor |
输出张量,维度不限制。 |
[0, 正无穷) |
BatchNormalization¶
功能描述
对输入张量做批归一化计算。
参数说明
表 1 BatchNormalization参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
scale |
input |
tensor |
输入张量的放缩系数,维度为1D。 |
- |
B |
input |
tensor |
偏置向量,维度为1D。 |
- |
input_mean |
input |
tensor |
每个通道的全局均值,维度为1D。 |
- |
input_var |
input |
tensor |
每个通道的全局方差,维度为1D。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
epsilon |
attribute |
float |
用于避免除零溢出(默认1e-5)。 |
- |
LayerNormalization¶
功能描述
对输入张量做层归一化计算。
参数说明
表 1 LayerNormalization参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
scale |
input |
tensor |
输入张量的放缩系数,维度为1D。 |
- |
B |
input |
tensor |
偏置向量,维度为1D。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
epsilon |
attribute |
float |
用于避免除零溢出(默认1e-5)。 |
- |
axis |
attribute |
int |
用于指定归一化的维度(默认-1)。 |
规格约束:-Rank(input) <= axis < Rank(input) |
LpNormalization¶
功能描述
沿指定轴,用 1 或 2 阶 Lp 范数对输入张量执行归一化计算。
参数说明
表 1 LpNormalization参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
p |
attribute |
int |
用于指定 Lp 范数的阶数。 |
规格约束:只支持取值1或2 |
axis |
attribute |
int |
用于指定归一化的维度(默认-1)。 |
规格约束:-Rank(input) <= axis < Rank(input) |
Slice¶
功能描述
从输入张量中沿指定轴提取子张量。
参数说明
表 1 Slice参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
starts |
input |
tensor |
维度为1D,对应 axes 中每个轴的起始索引。 |
规格约束:starts为离线常量 |
ends |
input |
tensor |
维度为1D,对应 axes 中每个轴的结束索引。 |
规格约束:ends为离线常量 |
axes(可选) |
input |
tensor |
维度为1D,指定要切片的轴(默认值为 [0,1,...,r-1])。 |
规格约束:axes为离线常量 |
steps(可选) |
input |
tensor |
维度为1D,对应 axes 中每个轴的切片步长(默认值为[1,1…,1])。 |
规格约束:steps为离线常量 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
GlobalMaxPool¶
功能描述
对输入张量除通道轴以外进行最大池化操作。
参数说明
表 1 GlobalMaxpool参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
X |
input |
tensor |
输入张量,维度为3D/4D,格式为NCW/NCHW。 |
规格约束:仅支持3D 4D |
Y |
output |
tensor |
输出张量,维度为3D/4D,格式为NCW/NCHW。 |
- |
GlobalAveragePool¶
功能描述
对输入张量除通道轴以外进行平均池化操作。
参数说明
表 1 GlobalAveragePool参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
X |
input |
tensor |
输入张量,维度为3D/4D,格式为NCW/NCHW。 |
规格约束:仅支持3D 4D |
Y |
output |
tensor |
输出张量,维度为3D/4D,格式为NCW/NCHW。 |
- |
Transpose¶
功能描述
对输入张量进行转置。
参数说明
表 1 Transpose参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
perm |
attribute |
tensor |
输入张量的维度重排顺序。 |
规格约束:不支持perm=[0,3,1,2]、[0,2,3,1]的Transpose单算子转换 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
ArgMax¶
功能描述
在张量的指定维度上,计算并返回最大值对应的位置索引。
参数说明
说明: 仅支持float类型,不支持int8类型。
表 1 ArgMax参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NHWC。 |
- |
reduced |
output |
tensor (int32) |
输出张量,维度为1D/2D/3D/4D,格式为N/ND/NCW/NCHW,取决于参数配置。 |
- |
axis |
attribute |
int |
指定在张量中执行计算逻辑的维度。 |
规格约束:-rank(value)<=axis<rank(value),rank为张量的秩。默认为0 |
keepdims |
attribute |
int |
控制是否保留被降维的轴。 |
规格约束:只支持取值0或1。默认为1 |
select_last_index |
attribute |
int |
控制最大值重复时的索引选择策略。为 0 时返回第一个最大值的索引;为 1 时返回最后一个最大值的索引。 |
规格约束:只支持取值0或1。默认为0 |
ArgMin¶
功能描述
在张量的指定维度上,计算并返回最小值对应的位置索引。
参数说明
说明: 仅支持float类型,不支持int8类型。
表 1 ArgMin参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NHWC。 |
- |
reduced |
output |
tensor (int32) |
输出张量,维度为1D/2D/3D/4D,格式为N/ND/NCW/NCHW,取决于参数配置。 |
- |
axis |
attribute |
int |
指定在张量中执行计算逻辑的维度。 |
规格约束:-rank(value)<=axis<rank(value),rank为张量的秩。默认为0 |
keepdims |
attribute |
int |
控制是否保留被降维的轴。 |
规格约束:只支持取值0或1。默认为1 |
select_last_index |
attribute |
int |
控制最小值重复时的索引选择策略。为 0 时返回第一个最小值的索引;为 1 时返回最后一个最小值的索引。 |
规格约束:只支持取值0或1。默认为0 |
Div¶
功能描述
对两输入张量进行除法运算。
参数说明
表 1 Div参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
A |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
B |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
C |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
Clip¶
功能描述
对张量进行最大最小值截断操作。
参数说明
表 1 Clip参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
X |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
min |
input |
tensor |
输入张量,维度为标量。 |
- |
max |
input |
tensor |
输入张量,维度为标量。 |
- |
Y |
output |
int |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
ReduceMax¶
功能描述
对指定维度的张量进行最大值归约计算。
参数说明
表 1 ReduceMax参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
axes |
input |
tensor |
输入张量,维度为1D,指定归约的轴。 |
规格约束:离线常量,元素范围[-rank(input), rank(input)) |
reduced |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
keepdims |
attribute |
int |
是否需要保留归约轴的维度。 |
配置范围:0/1 |
noop_with_empty_axes |
attribute |
int |
定义归约轴为空时的行为。 |
规格约束:不支持配置 |
ReduceMin¶
功能描述
对指定维度的张量进行最小值归约计算。
参数说明
表 1 ReduceMin参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
axes |
input |
tensor |
输入张量,维度为1D,指定归约的轴。 |
规格约束:离线常量,元素范围[-rank(input), rank(input)) |
reduced |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
keepdims |
attribute |
int |
是否需要保留归约轴的维度。 |
配置范围:0/1 |
noop_with_empty_axes |
attribute |
int |
定义归约轴为空时的行为。 |
规格约束:不支持配置 |
ReduceSum¶
功能描述
对指定维度的张量进行求和归约计算。
参数说明
表 1 ReduceSum参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
axes |
input |
tensor |
输入张量,维度为1D,指定归约的轴。 |
规格约束:离线常量,元素范围[-rank(input), rank(input)) |
reduced |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
keepdims |
attribute |
int |
是否需要保留归约轴的维度。 |
配置范围:0/1 |
noop_with_empty_axes |
attribute |
int |
定义归约轴为空时的行为。 |
规格约束:不支持配置 |
ReduceMean¶
功能描述
对指定维度的张量进行均值归约计算。
参数说明
表 1 ReduceMean参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
data |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
axes |
input |
tensor |
输入张量,维度为1D,指定归约的轴。 |
规格约束:离线常量,元素范围[-rank(input), rank(input)) |
reduced |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
- |
keepdims |
attribute |
int |
是否需要保留归约轴的维度。 |
配置范围:0/1 |
noop_with_empty_axes |
attribute |
int |
定义归约轴为空时的行为。 |
规格约束:不支持配置 |
Cast¶
功能描述
对输入张量进行数据类型的转换。
参数说明
说明: Cast算子不支持量化。
表 1 Cast参数概览
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
配置范围及规格约束说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为2D/3D/4D,格式为ND/NCW/NHWC。 |
数据类型仅支持float32、uint8、int8、int32 |
output |
output |
tensor |
输出张量,维度为2D/3D/4D,格式为ND/NCW/NCHW。 |
数据类型仅支持float32、uint8、int8、int32 |
round_mode |
attribute |
string |
转换为 FLOAT8E8M0 类型时的舍入模式配置。 |
规格约束:不支持配置 |
saturate |
attribute |
int |
设定输入值超出目标类型取值范围时的转换行为,仅对float8类型转换有效。 |
规格约束:不支持配置 |
to |
attribute |
int |
指定输入张量元素需要转换的目标数据类型。 |
规格约束:取值仅支持FLOAT、UINT8、INT8、INT32 |
专题¶
高效算子支持¶
HiSpark.AI工具链对部分常用嵌入式AI的算子规格进行了RISC-V专题的性能优化。在converter_lite命令行中开启riscvOpt选项,即可启用高性能模式。对性能要求较高的嵌入式AI场景中,在AI模型设计时可以优先采用以下规格。
Conv优化¶
以下规格的Onnx算子在riscvOpt高性能模式下推理时间上有较大优化,算法工程师在AI模型设计时可以优先采用以下规格。
表 1 Conv Onnx高效算子支持规格列表
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
高效算子规格支持范围说明 |
|---|---|---|---|---|
X |
input |
tensor |
输入张量,维度为3D或4D,格式为NCW/NCHW。 |
C 在 [1, 8, 16, 32]列表中 H,W均满足 6<=H, W <= 32 |
Y |
output |
tensor |
输出张量,维度为3D或4D,格式为NCW/NCHW。 |
C 在 [1, 8, 16, 32]列表中 H,W均满足 6<=H, W <= 32 |
kernel_shape |
attribute |
list(int) |
kernel沿各轴的大小。 |
1D 支持kernel_shape = 3, 5,2D 支持kernel_shape = 3,3 |
pads |
attribute |
list(int) |
各轴前后填充零的个数。 |
支持pads满足 输入输出tensor H/W相等的情况 |
strides |
attribute |
list(int) |
各个方向上kernel的移动步长。 |
stride = 1 |
以下规格的TFLite算子在riscvOpt高性能模式下推理时间上有较大优化,算法工程师在AI模型设计时可以优先采用以下规格。
表 2 Conv TFLite高效算子支持规格列表
参数名 |
参数/输入输出 |
数据类型 |
参数含义 |
高效算子规格支持范围说明 |
|---|---|---|---|---|
input |
input |
tensor |
输入张量,维度为4D,格式为NHWC。 |
C 在 [1, 8, 16, 32]列表中 H,W均满足 6<=H, W <= 32 |
output |
output |
tensor |
输出张量,维度为4D,格式为NHWC。 |
C 在 [1, 8, 16, 32]列表中 H,W均满足 6<=H, W <= 32 |
padding |
attribute |
string |
填充类型。 |
配置范围:支持SAME |
stride_h |
attribute |
int32 |
filter在H方向上的移动步长。 |
stride_h = 1 |
stride_w |
attribute |
int32 |
filter在W方向上的移动步长。 |
stride_w = 1 |




