前言

概述

本文档介绍如何在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算子规格

  • 更新ArgMax ArgMin ArgMax ArgMin
  • 更新Div Clip Cast Div Cast
  • 更新ReduceMax ReduceMin ReduceSum ReduceMean ReduceMax Sum Mean
  • 更新Quantize Dequantize
  • 更新Conv优化

02

2025-12-18

新增Onnx/TFLite算子规格

  • 更新Squeeze Unsqueeze Flatten Squeeze ExpandDims Slice Slice
  • 更新Abs Ceil Cos Exp Floor Log Round Sin Sqrt Abs Ceil Cos Exp Floor Log Round Rsqrt Sin Sqrt Square
  • 更新 BatchNormalization LayerNormalization LpNormalization L2Normalization
  • 更新 GlobalMaxPool GlobalAveragePool
  • 更新 DepthwiseConv2D Transpose Transpose

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工具包依赖于GCC-12.3版本,可以通过点击链接访问官网(GCC-12.3),选择下载12.3.0版本。

  • converter_lite工具包依赖于Python3.11环境。

  • 必选环境变量”中步骤必须按顺序执行,否则可能导致converter_lite工具无法链接到动态库。

必选环境变量

  1. 设置converter_lite工具动态库链接。

    export LD_LIBRARY_PATH=mindspore-enterprise-lite-{version}-linux-x64安装目录/tools/converter/lib:$LD_LIBRARY_PATH
    
  2. 将Python3.11的路径添加到LD_LIBRARY_PATH中。

    export LD_LIBRARY_PATH=${py311_inptsll_path}/lib:$LD_LIBRARY_PATH
    
  3. 将GCC的libstdc++6.0.30库路径添加到LD_LIBRARY_PATH中。

    export LD_LIBRARY_PATH=${libc++6.0.30_path}/libxx:$LD_LIBRARY_PATH
    
  4. 切换到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工程

  1. 获取开源框架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/”目录下。

  2. 获取converter_lite的压缩包,并进行解压。

    tar -xvf mindspore-enterprise-lite-{version}-linux-x64.tar.gz
    
  3. 将转换工具运行时所需的动态链接库添加到环境变量LD_LIBRARY_PATH中。

    export LD_LIBRARY_PATH=mindspore-enterprise-lite-{version}-linux-x64/tools/converter/lib/tools/converter/lib:${LD_LIBRARY_PATH}
    
  4. 进入转换目录。

    cd mindspore-enterprise-lite-{version}-linux-x64安装目录/tools/converter/converter
    
  5. 设置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
    
  6. 执行如下命令生成Micro工程代码(如下命令中使用的目录以及文件均为样例,请以实际为准)

    1. 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
      
    2. 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
      
    3. 运行成功后的结果显示为:

      CONVERT RESULT SUCCESS:0
      
  7. 若想快速体验转换后的Micro工程代码的编译与推理,请准备好环境、符合模型输入要求的*.bin输入数据以及Micro工程代码,具体操作请参见“初级功能”章节。

基础知识

工具功能架构

converter_lite工具功能架构设计如图1所示。

图 1 converter_lite工具功能架构

开源框架网络模型场景的详细流程如下:

  1. 开源框架网络模型经过Parser解析后,转换为中间态IR Graph。

  2. 中间态IR经过图拆分与图编译优化操作后,根据节点注册对应规格算子。

  3. 生成模型权重数据、头文件与C源码等Micro工程代码。

  4. 通过gcc或者RISCV交叉编译工具链生成静态库文件,并将其上传到指定平台执行推理。

工具运行流程

使用converter_lite工具将模型转成Micro工程代码的总体流程如图1所示。

图 1 converter_lite工具运行流程图

详细流程说明如下:

  1. 使用converter_lite工具之前,请先在开发环境中安装converter_lite工具包,并获取相关路径下的converter_lite工具。详细说明请参见“Converter_lite工具使用环境搭建”章节。

  2. 准备要进行转换的模型文件,并将其上传到开发环境。

  3. 设置Micro配置项,可根据需要进行量化与非量化的参数配置。

  4. 使用converter_lite工具进行模型转换,生成Micro工程代码。

  5. 编译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平台部署推理。

  1. converter_lite工具转换开源框架模型生成Micro工程,请参见“快速入门”章节。

    须知:

    • 在使用converter_lite转换命令时,--fmk选项必须与AI模型的开源框架对应,否则将导致转换失败。

    • micro.cfg的target必须选择RISCV,并且需要按照“开源框架的TFLite/ONNX模型转换为Micro工程”章节中的5场景二进行配置。

    • RISCV平台部署编译需要依赖海思提供的RISCV编译工具链,需下载相应的工具包。

  2. 切换到Micro工程目录。

    #切换到名为micro的Micro工程目录
    cd $HOME/micro/
    
  3. 下载并解压converter_lite工具包。

    #进入到算子库在开发环境的路径
    cd ${mindspore-enterprise-lite-{version}-linux-x64安装目录}
    #解压tar包
    tar -xvf mindspore-enterprise-lite-{version}-linux-x64.tar.gz
    
  4. 在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
    
  5. 在"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
    
  6. 将编译产物libnet.a与libmicro_runtime.a上传至海思工具包再次编译得到编译产物*.fwpkg文件。然后,使用海思工具在Windows平台烧录推理,具体步骤请参考对应的application/samples/ai中的readme.md。

基于x86_64平台精度调试

本节以mnist.tflite模型为例,介绍在x86_64平台上的编译和部署过程(x86部署可以为板端调试提供精度标杆)。

  1. 使用converter_lite工具将开源框架模型转换为Micro工程,请参见“快速入门”章节

    须知:

    • 在使用converter_lite转换命令时,--fmk选项必须与AI模型的开源框架对应,否则将导致转换失败,且需要配置--encryption=false参数。

    • micro.cfg的target必须选择x86,且需要按照“开源框架的TFLite/ONNX模型转换为Micro工程”章节中的5场景一进行配置。

  2. 切换到Micro工程目录。

    #切换到Micro工程目录,假设工程目录叫micro
    cd $HOME/micro/
    
  3. 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
    
  4. 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
      
  5. 运行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