1. 算子支持列表

本节介绍 AX620A/UONNX 算子的支持情况.

Operator

CPU or NPU

算子约束

ONNX OpSet

Abs

NPU

v13

Add

NPU

只支持两个输入, shape 需要一致, 支持自动 Boardcast

v13

ArgMax

NPU

输入仅支持四维 tensor, 需要接在 Conv 算子后

v13

ArgMin

NPU

输入仅支持四维 tensor, 需要接在 Conv 算子后

v13

AveragePool

NPU

不支持配置 auto_pad /count_include_pad 属性, 且 pad 必须对称

BatchNormalization

NPU

需要接在 Conv 算子之后

Clip

NPU

Concat

NPU

Conv

NPU

in_channels % groups == 0

out_channels % groups == 0

Kernel Size 支持 [1, 18]

strides 一般取 [[1, 1], [1, 2], [2, 1], [2, 2], [3, 3]], 当 strides = kernel_size, 支持 (n, n) or (n, 1) or (1, n) 的 pattern, (n, 1), (1, n) 的情况下, 要求 n 不等于 2 或者 3

padding 前的 feature map 的 width <= 8191, 而上下左右, padding top <= 16384

dilation 后的 kernel_size 也需要小于等于 18, 否则很容易报错

output_shape 中的 width 要整除 stride_w, 即 output_shape_width % stride_w == 0

kernel_size_width * kernel_size_height * input_channel <= 65535

ConvTranspose

NPU

不支持 auto_pad 属性, pad 必须对称, dilation 目前只支持配置为 1

DepthToSpace

NPU

Div

NPU

只支持两个输入, shape 需要一致, 支持自动 Boardcast

Flatten

NPU

Flatten 一般搭配 Linear 使用

GRU

CPU

Gemm

NPU

GlobalAveragePool

NPU

GlobalMaxPool

NPU

HardSigmoid

NPU

仅支持接在 Conv 算子之后

Identity

NPU

LRN

CPU

LSTM

CPU / NPU

LeakyRelu

NPU

MatMul

NPU

MaxPool

NPU

不支持配置 storage_order 属性, 且 dilation 目前只支持配置为 1

MaxRoiPool

NPU

Mul

NPU

只支持两个输入, shape 需要一致, 支持自动 Boardcast

PRelu

NPU

Pad

NPU

仅支持 Constant 模式, 可以配置 0 和 -inf, 不支持 reflect、edge 模式

ReduceL2

NPU

仅支持输入为 4D Tensor 的情况

ReduceMax

CPU / NPU

仅支持输入为 4D Tensor 的情况

ReduceMean

CPU / NPU

仅支持输入为 4D Tensor 的情况

ReduceSum

CPU / NPU

仅支持输入为 4D Tensor 的情况

ReLU

NPU

Reshape

NPU

仅支持输入为 3D 或 4D Tensor 的情况

Resize

CPU / NPU

Shape

CPU / NPU

Sigmoid

NPU

Slice

NPU

仅支持步长为 1 的操作

Softmax

CPU / NPU

Softplus

CPU / NPU

仅支持接在 Conv 算子之后

SpaceToDepth

NPU

Sub

NPU

只支持两个输入, shape 需要一致, 支持自动 Boardcast

Tanh

NPU

Tile

CPU / NPU

Transpose

CPU / NPU

Unsqueeze

CPU / NPU