MindSpore Lite支持的ONNX算子列表

查看源文件

  • 以下所有算子,均不支持int64类型输入。

  • 当前支持使用环境变量export KEEP_ORIGIN_DTYPE=1来保持数据类型为int64,当使用int32数据类型存在溢出时可以考虑使用该选项,但是目前仅为实验性选项,后续将移除。

MindSpore Lite算子名称

算子功能

对应ONNX算子名称

算子规格

Abs

逐元素计算绝对值

Abs

不支持uint8类型。不支持输入张量量化参数为空。

Activation

激活函数

Relu、LeakyRelu、PRelu、Elu、Tanh、Sigmoid、HardSigmoid、Softplus、Gelu

-

AddFusion

逐元素计算加法

Add、Int8Add

-

AdderFusion

基于加法的卷积运算

adder_f

-

ArgmaxFusion

求某一维度最大值

ArgMax

不支持uint8类型。不支持输入张量量化参数为空。

ArgminFusion

求某一维度最小值

ArgMin

-

AvgPoolFusion

平均池化

AveragePool、GlobalAveragePool、Int8AveragePool

-

BatchNorm

批量归一化

BatchNormalization

-

BiasAdd

将偏置向量(bias)添加到输入张量

BiasAdd

-

BroadcastTo

扩维

Expand

-

Cast

数据类型转换

Cast

不支持以下数值类型转换:fp32转int8、fp32转uint32、int32转int8、int32转uint32、int32转uint8、int8转bool、int8转uint8。

Ceil

向上取整

Ceil

-

Clip

限制元素范围

Clip

仅支持将clip(0, 6)转换为Relu6。

Concat

拼接张量

Concat

-

ConstantOfShape

生成一个与输入形状相同的张量,并用指定常量填充

ConstantOfShape

-

Conv2DFusion

2D卷积

Conv、Int8Conv、ConvRelu、Int8ConvRelu

-

Conv2dTransposeFusion

执行转置卷积运算

ConvTranspose

-

Cos

逐元素计算余弦

Cos

-

CumSum

累计元素和

CumSum

-

DepthToSpace

将深度数据重新排列到空间维度中

DepthToSpace

不支持uint8类型。不支持未知维度输入。

DivFusion

逐元素除法

Div

不支持除数为0。

Dropout

随机将输入张量的部分元素置 0

Dropout

-

DynamicQuant

动态将浮点张量量化为 uint8类型

DynamicQuantizeLinear

-

Eltwise

元素级运算

Sum、Max

仅支持输入个数为2。

Elu

激活函数,对负输入使用指数修正

Elu、NonMaxSuppression

-

Equal

判断输入是否相等

Equal

不支持uint8输入;int8输入不支持bool输出。

Erf

误差函数

Erf

-

ExpFusion

逐元素取指数

Exp

-

Flatten

数据按维度展开

Flatten

不支持uint8类型。

Floor

向下取整

Floor

-

FusedBatchNorm

对输入做标准化

BatchNormalization

-

Gather

沿单一维度收集指定索引位置的元素

Gather

不支持uint8类型。不支持QuantType_QUANT_NONE量化类型。

GatherD

将输入tensor中的元素根据索引tensor进行收集

GatherElements

-

GatherNd

将输入张量的切片聚合成具有indices指定维度的新张量

GatherND

-

Greater

逐元素比较两个张量,返回 A > B的逻辑结果(True/False)

Greater

-

GreaterEqual

逐元素比较两个张量,返回 A ≥ B的逻辑结果

GreaterOrEqual

-

InstanceNorm

实例归一化

InstanceNormalization

-

LeakyReLU

带泄漏的 ReLU激活函数,对负输入给予微小斜率

LeakyRelu

-

Less

逐元素比较两个张量,返回 A < B的逻辑结果。

Less

-

Log

逐元素求对数

Log

不支持负数输入。

LogicalAnd

逐元素逻辑与(AND)运算

And

-

LogicalNot

元素级逻辑非运算

Not

-

LogicalOr

逐元素逻辑或(OR)运算

Or

-

LogSoftmax

对输入向量进行softmax操作,然后再对softmax结果取对数

LogSoftmax

不支持inf输入。

LRN

局部响应标准化,用于防止数据过度拟合

LRN

-

LSTM

长短期记忆网络单元

LSTM

-

MatMulFusion

对2个输入做矩阵乘法运算;使用输入张量、一组学习的权重计算内积,并添加偏差

MatMul、Gemm

-

Maximum

取元素级最大值

Max

-

MaxPoolFusion

最大池化

MaxPool、GlobalMaxPool

-

Minimum

取元素级最小值

Min

-

Mod

返回除法元素的余数

Mod

-

MulFusion

逐元素乘法

Mul

-

Neg

逐元素求负数

Neg

-

NonMaxSuppression

非极大值抑制

NonMaxSuppression

-

NonZero

返回输入张量中所有非零元素的索引

NonZero

-

OneHot

将整数索引张量转换为独热编码(One-Hot)表示

OneHot

-

PadFusion

将输入张量加上指定的 padding,使其达到指定的大小

Pad

不支持int32类型。

PowFusion

逐元素求幂

Pow

仅支持指数为单个常数。

PReLUFusion

PRelu激活函数

PRelu

-

RandomNormal

生成一个张量,其中的值从正态分布(高斯分布)中随机采样

RandomNormal

-

Range

生成某个区间内的元素

Range

-

Reciprocal

返回倒数

Reciprocal

-

ReduceFusion

归约操作

ReduceMean、ReduceMax、ReduceMin、ReduceProd、ReduceSum、ReduceSumSquare、ReduceL2,ReduceL1、ReduceLogSum

-

Reshape

改变张量形状,总元素个数不变

Reshape、Flatten

-

Resize

对输入张量进行上采样或调整大小

Resize、Upsample

-

ReverseSequence

对输入张量的可变长度序列进行部分反转

ReverseSequence

-

Round

四舍五入到最接近的整数数值

Round

-

ScatterNd

根据索引将更新张量中的值散射到输出张量的指定位置

ScatterND

-

ScatterNdUpdate

使用给定值以及输入索引更新输入数据的值

ScatterNdUpdate

-

Shape

获得张量shape

Shape

-

Sin

逐元素计算正弦

Sin

-

Size

获取张量维度大小

Size

-

SliceFusion

张量切片操作

Slice

-

Softmax

归一化操作

Softmax

-

SpaceToDepth

高度和宽度维度的值移至深度维度

SpaceToDepth

-

Splice

沿指定轴连接输入张量的多个切片或范围。

Splice

-

Split

将输入张量沿指定轴分割成多个较小的输出张量。

Split

-

Sqrt

逐元素开根号

Sqrt

-

Squeeze

移除维度为1的维度

Squeeze

-

StridedSlice

Tensor切片

Slice、DynamicSlice

-

SubFusion

逐元素相减

Sub

-

TileFusion

平铺给定矩阵

Tile

不支持int8类型。

TopKFusion

从输入张量中返回top K个元素

TopK

-

Transpose

Tensor转置

Transpose、Int8Transpose

-

Tril

下三角矩阵

Trilu(属性upper=0)

-

Triu

上三角矩阵

Trilu(属性upper=1)

-

Unsqueeze

将输入张量添加一个新的维度

Unsqueeze

-

Where

元素选择

NonZero、Where

-

转换工具支持的其他算子

-

Constant、Atan、Asin、Tan、Loop、Dropout、If、Identity、Int8GivenIntTensorFill、Int8GivenTensorFill、Int8Quantize、Int8Dequantize、LpNormalization

转换工具支持,但不需要具体实现的算子,一般这类算子在转化工具中被优化而消失,如被融合掉或者使用其他算子代替。