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