AI常用算子列表

 

AI常用算子列表

Abs

AbsGrad

AcosGrad

Add

AsinGrad

AsinhGrad

AtanGrad

BiasAddGrad

BNTrainingUpdate

Ceil

ConcatD

Cos

Cosh

Div

Elu

EluGrad

Equal

Erf

Erfc

Exp

Expm1

Floor

Gelu

GeluGrad

Inv

InvGrad

L2Loss

L2Normalize

L2NormalizeGrad

Log

LogSoftmaxV2

LogSoftmaxGrad

Log1p

Maximum

Mod

Mul

Neg

OnesLike

Pow

PReluGrad

Reciprocal

ReciprocalGrad

ReduceAllD

ReduceAnyD

ReduceMaxD

ReduceMeanD

ReduceSumD

Relu

ReluGrad

Relu6

Relu6Grad

Rint

Round

Rsqrt

RsqrtGrad

Selu

Sigmoid

SigmoidCrossEntropyWithLogits

SigmoidGrad

Sign

Sinh

SmoothL1Loss

SoftmaxV2

SoftmaxGrad

Softplus

Softsign

SplitD

Sqrt

SqrtGrad

Square

StridedSliceD

Sub

Tanh

TanhGrad

SoftmaxCrossEntropyWithLogits

MatMul

GNTrainingReduce

GNTrainingUpdate

CosineEmbeddingLoss

INTrainingReduceV2

INTrainingUpdateV2

AvgPool

Conv2D

Conv2DBackpropInput

Conv2DBackpropFilter

Conv2DCompress

Conv2DTranspose

Conv3D

Conv3DBackpropInput

Conv3DBackpropFilter

DepthwiseConv2D

DepthwiseConv2DBackpropInput

DepthwiseConv2DBackpropFilter

Deconvolution

GEMM

Pooling

 

 

序号

算子

含义

1

Activation

激活函数,支持模式:Abs、Sigmoid、Tanh、ELU、PReLU、Relu、Relu6

2

Add

计算2个输入的和

3

Argmax

返回输入的最大值对应的索引序号

4

BatchMatmul

在Batch维度上,对切片进行Matmul运算

5

BatchNorm

对输入在batch上做归一化计算

6

BatchToSpaceND

将批处理数据重新排列到空间数据块中,然后进行裁剪

7

BiasAdd

计算输入tensor和1个常量输入的和

8

BNInference

对输入在batch上做归一化计算,同BatchNorm

9

Cast

转换输入的数据类型

10

Ceil

向上取整

11

ClipByValue

将一个张量中的数值限制在[min, max]范围之内

12

Concat

数据按维度拼接

13

Convolution

卷积

14

ConvolutionDepthwise

深度卷积

15

ConvTranspose

转置卷积,计算过程约等于卷积的反向计算

16

Cos

计算cos

17

Crop

截取

18

CropAndResize

从输入图像张量中提取作物并调整它们的大小

19

Deconvolution

反卷积

20

DepthToSpace

Channel维通过空间块转移至Height、Width维的一种数据重排

21

Eltwise

按元素操作层(求和、乘积、最大值)

22

Erf

误差函数(也称为高斯误差函数)

23

Equal

判断第一个输入是否等于第二个输入

24

Exp

计算并返回给定输入、给定参数的EXP值

25

ExpandDims

对输入shape进行补维

26

Expm1

计算y = exp(x) - 1

27

Fill

使用输入的维度和值信息,生成一个tensor

28

Flatten

保留输入的第一个维度,把第一个维度包含的每个子张量展开成一个行向量

29

FlattenV2

将输入张量扁平化为二维矩阵,可选起始和终止axis

30

Floor

向下取整

31

FloorDiv

x / y 向下取整

32

FloorMod

返回除法元素的余数

33

FullConnection

全连接

34

Gather

根据indices对输入tensor的第axis根轴获取合成新的tensor

35

GatherNd

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

36

Gemm

使用输入张量、一组学习的权重计算内积,并添加偏差

37

Greater

判断第一个输入是否大于第二个输入

38

GreaterEqual

按元素返回(x1 >= x2)真值

39

InstanceNorm

对输入在像素上做归一化计算

40

Interp

插值层

41

LeakyRelu

激活函数

42

LayerNorm

层归一化函数

43

Less

按元素返回(x1 < x2)真值

44

LessEqual

比较两个输入张量每个元素是否满足小于等于的关系

45

Log

计算每个元素的自然对数

46

Log1p

计算(1+x)元素的自然对数

47

LogicalAnd

对两个输入张量做逻辑与运算

48

LogicalNot

对输入张量做逻辑非运算

49

LogicalOr

对两个输入张量做逻辑或运算

50

LRN

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

51

Matmul

对2个输入做矩阵乘法运算

52

Maximum

计算2个输入中的较大值

53

MirrorPad

根据指定的paddings来填充一个tensor

54

Minimum

返回两个输入中小的元素

55

Mul

计算2个输入的乘积

56

Multinomial

生成多项式分布的随机数据

57

Neg

对每个元素值取反

58

NotEqual

比较两个输入张量每个元素是否满足不等于的关系

59

NonMaxSuppressionV3D

按分数降序选择边界框的子集

60

NonMaxSuppressionV6

选出与上一个框有较高的交叉点重叠率(IOU)的框

61

OneHot

将input转化为独热类型数据输出

62

Pack

将多个输入堆叠拼接成1个

63

Pad

对输入做shape填充

64

PadV2

对输入做shape填充,填充值为constant_values

65

Permute

对输入做维度转置操作

66

Pooling

池化层

67

Pow

计算幂

68

Power

计算y =(scale*x+shift)^ power

69

Prelu

执行参数ReLU,生成一个输出数据(Tensor)

70

PriorBox

在特征图的每个位置生成默认框

71

RealDiv

根据实际数据类型,按元素返回x1/x2

72

ReducelogsumExp

沿着axis指定的轴计算log(sum(exp(elements)))

73

ReduceMax

计算张量沿着某一维度的和,可以在求最大值后降维

74

ReduceMean

计算一个张量中各维元素的均值

75

ReduceMin

计算张量沿着某一维度的和,可以在求最小值后降维

76

ReduceProd

计算一个张量各个维度上元素的乘积

77

ReduceSum

计算张量沿着某一维度的和,可以在求和后降维

78

Reduction

算张量沿着某一维度的和/绝对值和/平方和/均值和,降维运算

79

Reorg

实现数据重排,调整tensor维度。以stride为步长对Channel、Height、Width放大或缩小

80

Reshape

改变输入维度

81

ResizeBilinear

将图片尺寸调整到指定的大小

82

ResizeNearestNeighbor

使用最近邻差值算法进行图像大小调整

83

ResizeNearestNeighborV2

使用最近邻插值将图像大小调整为size大小

84

Rint

查找并返回最接近“x”的整数,如果结果在两个可表示值之间选择偶数表示

85

Round

将张量的值按元素四舍五入到最接近的整数

86

Rsqrt

计算每个元素的平方根的倒数

87

Scale

out=alpha*Input+beta

88

ScatterUpdate

将稀疏更新应用于变量引用

89

Select

根据条件选择输出

90

ShuffleChannel

对输入以Channel维度按照group做数据分组重排

91

ShuffleChannelV2

在axis维度做Shuffle运算

92

Sin

计算sin

93

Slice

从输入张量中提取切片,此操作从由begin指定位置开始的张量input中提取一个尺寸size的切片

94

Softmax

归一化逻辑函数

95

SpaceToBatchND

重新排列的空间数据块成批

96

SpaceToDepth

通过空间快将Height、Width维的数据转移至Channel维的一种数据重排

97

SparseToDense

将稀疏表示转换为密集张量

98

Split

沿指定维度将输入张量平均分割成一个张量列表

99

SplitV

沿指定轴将输入张量分割为num_split个新的张量

100

Sqrt

计算输入张量的平方根

101

Square

计算每个元素的平方

102

Squeeze

从输入张量的shape中删除一个值为1的维度

103

SSDDetectionOutput

SSD网络的一个算子,它的作用是根据priorbox和其对应的偏移量、评分信息来生成检测目标的数量和候选框

104

StrideSlice

对输入从起始位置到结束位置按照步长截取数据

105

StrideSliceV2

提取张量的一个分段切片

106

Sub

计算2个输入的差

107

Tan

计算Tan

108

Threshold

如果该值大于阈值,则输出为1;否则,输出为0

109

Tile

平铺给定矩阵

110

TopK

提取最后一个维度的k个最大值

111

TruncateDiv

按元素返回x / y,对结果小数部分截断保留整数部分,截断表示负数将小数量向零舍入

112

Unpack

Pack的逆操作,将数据沿axis轴进行分组,输出N个数据维度相同,维度数减1

113

Xlogy

返回x乘以log(y)

 

 

ONNX算子边界

序号

算子

含义

边界

1

Abs

求绝对值

【输入】

input:输入Tensor,float32

【约束】

无限制

【输出】

output:输出Tensor

2

Acos

反余弦

【输入】

input:输入Tensor,数值范围[-1, 1],类型:float32

【约束】

无限制

【输出】

output:输出Tensor,数值范围[0, pi],类型与x输入相同

3

Add

二元点加

【输入】

  • A:输入Tensor,类型:float32,第1个操作数
  • B:输入Tensor,类型:float32,第2个操作数

【约束】

支持两组输入的维度不一致,进行广播操作(广播即维度补齐),目前支持以下几种广播场景:

  • NCHW+NCHW(备注, 两个维度相同tensor)
  • NCHW+scalar
  • NCHW+W, CHW+W, HW+W(备注, W维度做broadcast)
  • NCHW + NCH1, CHW + CH1, HW + H1
  • CHW + C1W(备注,H维度做broadcast)

对于两个输入维度个数不相同的场景,需要将维度补齐到四维。例如,x.shape=(1, 5, 6, 7) 和 y.shape=(6, 7)需要将y的维度补齐到4维,即y.shape=(1, 1, 6, 7)。

说明:两个Tensor的输入顺序可以互换。

【输出】

C:输出Tensor,类型同B

4

And

取与运算

【输入】

  • A:输入Tensor,类型:bool
  • B:输入Tensor,类型:bool

【约束】

input输入不支持NCHW格式数据

【输出】

output:输出Tensor,类型:bool

5

ArgMax

在指定轴上找到最大值索引

【输入】

data:输入Tensor,类型:float32

【参数】

  • axis:int,default值为0,取值范围[-r, r-1],r = rank(data)
  • keepdims:int,default值为1

【输出】

output:输出Tensor,类型:int64

6

Asin

反正弦

【输入】

input:输入Tensor,数值范围[-1, 1],类型:float32

【约束】

无限制

【输出】

output:输出Tensor,数值范围[-pi/2, pi/2],类型与input输入相同

7

Atan

反正切

【输入】

input:输入Tensor,类型:float32

【约束】

无限制

【输出】

output:输出Tensor,类型与input输入相同

8

AveragePool

平均池化

【输入】

X:输入Tensor,类型:float32

【参数】

  • auto_pad:optional, string,pad的计算模式,默认是NOTSET
  • ceil_mode:optional, int,使用ceil(向上取整)还是floor(向下取整)计算输出维度,默认是0(ceil)
  • count_include_pad:optional,int,计算边缘时是否包含pad,默认是0,不包含pad
  • kernel_shape:list of ints,每个值对应相应维度的窗口大小
  • pads:list of ints,每个值对应相应维度的pad值,默认值为0
  • strides:list of ints,其中每个值对应相应维度的滑动步长,默认值为1

【约束】

  • auto_pad参数不支持SAME_UPPER,SAME_LOWER
  • count_include_pad参数只支持默认值

【输出】

Y:输出Tensor,类型与X输入相同

9

BatchNormalization

对输入做标准化

【输入】

  • X:输入Tensor,类型:float32
  • scale:输入Tensor,类型:float32,用于缩放
  • B:输入Tensor,类型:float32,偏差
  • mean:输入Tensor,类型:float32,用于推理总体均值
  • var:输入Tensor,类型:float32,用于推理总体方差
  • training_mode:输入Tensor,optional,训练模式

【参数】

  • epsilon:float32,在X的方差中添加的一个小的浮点数,默认值是1e-05
  • momentum:float32,计算mean和var的因子,默认值为0.9
  • spatial:int,计算mean和var的方式,默认值1

【约束】

  • 不支持训练场景
  • 不支持training_mode输入
  • 不支持output_mean、output_var、saved_mean、saved_var输出
  • opset7中不支持spatial设置

【输出】

  • Y:输出Tensor,和X输入有相同的维度
  • output_mean:训练模式下是滑动均值,非训练模式下是估计均值
  • output_var:训练模式下是滑动方差,非训练模式下是估计方差
  • saved_mean:已保存的均值
  • saved_var:已保存的均值

10

Cast

数据类型转换

【输入】

input:输入Tensor,类型:float32,bool,int32,uint8

【参数】

to:数据类型int

  • FLOAT = 1
  • UINT8 = 2
  • INT8 = 3
  • UINT16 = 4
  • INT16 = 5
  • INT32 = 6
  • INT64 = 7
  • STRING = 8
  • BOOL = 9
  • FLOAT16 = 10
  • DOUBLE = 11
  • UINT32 = 12

【约束】

支持下面类型转换:

  • fp16 -> fp32
  • fp32 -> fp16
  • u8 -> fp16
  • fp16 -> u8
  • int32 -> fp32
  • fp32->int32
  • fp16 -> int8
  • int8 -> fp16
  • in32 -> fp16
  • fp16 -> int32
  • bool -> fp16
  • fp16 -> bool

【输出】

output:输出Tensor

11

Ceil

向上取值

【输入】

X:输入Tensor,类型:float32

【约束】

【输出】

output:输出Tensor,类型与input输入相同

12

Clip

将输入限制在一个区间中

【输入】

  • input:输入Tensor,类型:float32
  • min:Scalar Tensor,optional,类型:float32,区间最小值
  • max:Scalar Tensor,optional,类型:float32,区间最大值

【参数】

在opset 7~10中min和max是参数

【约束】

  • min输入必须是常量
  • max输入必须是常量

【输出】

output:输出Tensor,类型与input输入相同

13

Concat

数据按维度拼接

【输入】

  • inputs:List of tensors,类型:float32,int32

【参数】

  • axis:int,轴参数,控制需要拼接的数据轴,负值表示从维度最后一位往前数

【约束】

【输出】

concat_result:拼接之后的Tensor,类型:float32,int32

14

Constant

输出1个常量Tensor

【输入】

【参数】

  • sparse_value:稀疏类型的输出值
  • value:Tensor,输出Tensor的值
  • value_float:float32类型的标量输出Tensor的值
  • value_floats:list of floats,float32类型的1D输出Tensor的值
  • value_int:int,int32类型的标量输出Tensor的值
  • value_ints:list of ints,int32类型的1D输出Tensor的值
  • value_string:string,string类型的标量UTF-8输出Tensor的值
  • value_strings:list of strings,string类型的1D UTF-8输出Tensor的值

【约束】

  • 不支持sparse_value参数
  • 不支持value_string参数
  • 不支持value_strings参数

【输出】

output:输出Tensor,和提供的Tensor具有相同的值

15

ConstantOfShape

根据给定的值和维度,生成1个Tensor

【输入】

input:1-D Tensor,类型:int32,uint8

【参数】

value:optional,0-D Tensor,需要填充的值,默认为0,默认类型float32

【约束】

【输出】

output:输出Tensor,类型同value

16

Conv

卷积

【输入】

  • X:输入Tensor,类型:float32
  • W:输入Tensor,具有维度(M * C/group * kH * kW),其中C是channels的数量,kH和kW是卷积核的高和宽,M是feature maps的数量
  • B:optional,1D 常量Tensor,卷积计算时添加的偏置

【参数】

  • auto_pad:optional, string,pad的计算模式,默认是NOTSET
  • dilations:optional,list of ints,每个值对应卷积核对应空间轴上的扩张值,默认值1
  • group:optional,int,组的数量
  • kernel_shape:list of ints,卷积核的维度
  • pads:list of ints,每个值对应相应维度的pad值
  • list of ints,每个值对应相应维度的滑动步长,默认值为1

【约束】

auto_pad参数不支持SAME_UPPER, SAME_LOWER

【输出】

Y:输出Tensor,类型同X

17

ConvTranspose

反卷积

【输入】

  • X:输入Tensor,类型:float32
  • W:输入Tensor,具有维度(M * C/group * kH * kW),其中C是channels的数量,kH和kW是卷积核的高和宽,M是feature maps的数量
  • B:optional,1D 常量Tensor,卷积计算时添加的偏置

【参数】

  • auto_pad:optional, string,pad的计算模式,默认是NOTSET
  • dilations:optional,list of ints,每个值对应卷积核对应空间轴上的扩张值,默认值1
  • group:optional,int,组的数量
  • kernel_shape:list of ints,卷积核的维度
  • output_padding:为输出坐标指数较高的边添加的额外值
  • output_shape:输出的shape
  • pads:list of ints,每个值对应相应维度的pad值
  • list of ints,每个值对应相应维度的滑动步长,默认值为1

【约束】

  • auto_pad参数不支持SAME_UPPER, SAME_LOWER
  • output_padding参数不支持
  • W输入必须为常量

【输出】

Y:输出Tensor,类型同X输入

18

Cos

计算余弦

【输入】

input:输入Tensor,类型:float32

【约束】

无限制

【输出】

output:输出Tensor,类型与x输入相同

19

DepthToSpace

重组数据,根据blocksize

【输入】

input:输入Tensor,类型:float32

【参数】

  • blocksize:数据类型:int
  • mode: 数据类型 string

【约束】

mode仅支持DCR CRD两种模式

【输出】

output:输出Tensor,类型与x输入相同

20

Div

做除法运算

【输入】

  • A:输入Tensor,类型:float32,int32
  • B:输入Tensor,类型:float32,int32

【约束】

对于两个输入维度个数不相同的场景,需要将维度补齐到四维。例如,x.shape=(1, 5, 6, 7) 和 y.shape=(6, 7)需要将y的维度补齐到4维,即y.shape=(1, 1, 6, 7)。

【输出】

C:输出Tensor,类型与x输入相同

21

Elu

根据f(x) = alpha * (exp(x) - 1.) 该公式做计算

【输入】

X:输入Tensor,类型:float32

【参数】

alpha:float32,缺省值为1.0

【约束】

【输出】

Y:输出Tensor,类型与x输入相同

22

Equal

判断输入是否相等

【输入】

  • A:输入Tensor,类型:uint8,float32,bool,int32(int32只支持标量)
  • B:输入Tensor,类型:uint8,float32,bool,int32(int32只支持标量)

【约束】

暂不支持广播场景

【输出】

C:输出Tensor,类型 bool

23

Erf

对输入数据逐个元素做error function计算

【输入】

x:输入Tensor,类型:float32

【约束】

无限制

【输出】

y:输出Tensor,类型与x输入相同

24

Exp

指数函数,output = e^input

【输入】

input:输入Tensor,类型:float32,double

【约束】

无限制

【输出】

output:输出Tensor,类型与x输入相同

25

Expand

根据指定的shape做广播

【输入】

  • input:输入Tensor,类型:float32,int8, uint8, bool
  • shape:输入Tensor,类型:int32,1D的tensor,指定输出的shape

【约束】

  • 支持任意满足broadcast条件的Broadcast场景
  • 对于需要插broadcastTo算子的Add、Sub、Mul、Div、Max,不支持量化功能
  • 支持在Kirin 9000及以后的芯片上运行

【输出】

output:输出Tensor,类型与x输入相同

26

Flatten

数据按维度展开

【输入】

input:输入 Tensor,类型float32

【参数】

axis:int,标识数据在哪个维度上展开,值的范围[-r, r],r是输入Tensor的维度个数,负值表示从最后1个维度往回计算

【约束】

axis参数必须为1

【输出】

output:2-D Tensor,类型float32

27

Floor

对输入进行向下取整

【输入】

X:输入Tensor,类型:float32

【约束】

【输出】

Y:输出Tensor,类型同X输入

28

Gather

根据输入的indices,从data中获取entry组成输出tensor

【输入】

  • data:输入Tensor,类型:float32, int32
  • indices:输入Tensor,数据类型int32

【参数】

axis:int, [-r, r-1] ,r = rank(data)

【约束】

【输出】

output:输出Tensor,类型同data输入

29

Gemm

通用矩阵乘法,

Y = alpha * A' * B' + beta * C

【输入】

  • A:输入Tensor,类型:float32
  • B:输入Tensor,类型:float32
  • C:输入Tensor,类型:float32

【参数】

  • alpha:float32,A * B的标量乘数,默认值1.0
  • beta:float32,C的标量乘数,默认值1.0
  • transA:int,A输入是否需要转置,默认值0
  • transB:int,B输入是否需要转置,默认值0

【约束】

  • transA参数不支持true
  • 输入B和C只支持常量
  • 如果A是M*K,B是K*N,C可以是N或1*N或不指定

【输出】

Y:输出Tensor,维度是(M, N)

30

GlobalAveragePool

对输入进行全局平均池化

【输入】

X:输入Tensor,类型:float32,维度是(N * C * H * W)

【约束】

【输出】

Y:输出Tensor,类型同X输入

31

GlobalMaxPool

对输入进行全局最大池化

【输入】

X:输入Tensor,类型float32,维度是(N * C * H * W)

【约束】

【输出】

Y:输出Tensor,类型同X输入

32

Greater

逐个元素比较哪个大

【输入】

  • A:输入Tensor,类型float32,
  • B:输入Tensor,类型float32,

【约束】

【输出】

C:输出Tensor,类型 bool

33

InstanceNormalization

按照下面公式做归一化运算

y = scale * (x - mean) / sqrt(variance + epsilon) + B

【输入】

  • input:输入4D Tensor,类型float32,
  • scale:输入Tensor,类型float32,
  • B:输入Tensor,类型float32,

【参数】

alpha:float32,避免除零错误,默认值1e-05

【约束】

【输出】

output:输出Tensor,类型同input输入

34

LeakyRelu

对输入进行LeakyRelu激活函数计算

f(x) = alpha * x for x < 0, f(x) = x for x >= 0

【输入】

X:输入Tensor,类型:float32

【参数】

alpha:float32,泄漏系数,默认值0.01

【约束】

【输出】

Y:输出Tensor,类型同X输入

35

Less

对输入A和B进行逐元素Less逻辑运算

【输入】

  • A:输入Tensor,类型:float32
  • B:输入Tensor,类型:float32

【约束】

无限制

【输出】

C:输出Tensor,类型:bool

36

Log

取自然对数运算

【输入】

input:输入Tensor,类型: float32

【约束】

【输出】

output:输出Tensor,类型同input输入

37

LogSoftmax

对输入进行logsoftmax(log of softmax)计算

【输入】

input:输入Tensor,类型:float32

【参数】

axis:int,输入变为2D维度时的轴,默认值1

【约束】

axis参数仅支持最后一维

【输出】

output:输出Tensor,维度和输入相同

38

MatMul

矩阵乘

【输入】

  • A:输入Tensor,类型:float32
  • B:输入Tensor,类型:float32

【约束】

  • A: 输入tensor,2<=rank<=4
  • B: 输入tensor,类型与rank同A

【输出】

Y:输出Tensor,类型:float32

39

Max

逐个元素取最大值

【输入】

  • X1:输入Tensor,类型:float32
  • X2:输入Tensor,类型:float32

【约束】

  • 对于两个输入维度个数不相同的场景,需要将维度补齐到四维。例如,x.shape=(1, 5, 6, 7) 和 y.shape=(6, 7)需要将y的维度补齐到4维,即y.shape=(1, 1, 6, 7);Kirin 9000平台下,已经支持broadcast;1<=N <= 65535
  • 只支持2个输入

【输出】

y:输出Tensor,类型:float32

40

MaxPool

最大池化

【输入】

X:输入Tensor,类型:float32

【参数】

  • auto_pad:optional, string,pad的计算模式,默认是NOTSET
  • ceil_mode:optional, int,使用ceil(向上取整)还是floor(向下取整)计算输出维度,默认值0(ceil)
  • dilations:optional,list of ints,每个值对应池化核对应空间轴上的扩张值,默认值1
  • kernel_shape:list of ints,每个值对应相应维度的窗口大小
  • pads:list of ints,每个值对应相应维度的pad值,默认值为0
  • storage_order:int,Tensor的存储顺序,默认值0,按行存储
  • strides:list of ints,其中每个值对应相应维度的滑动步长,默认值为1

【约束】

  • auto_pad参数只支持默认值
  • storage_order参数只支持默认值
  • dilations参数只支持默认值
  • Indices可选输出不支持

【输出】

  • Y:输出Tensor,类型与X输入相同
  • Indices:optional,输出Tensor

41

Min

逐个元素取最小

【输入】

  • X1:输入Tensor,类型:float32, int32
  • X2:输入Tensor,类型:float32,int32

【约束】

  • 5D输入不支持常量广播
  • 只支持2个输入

【输出】

y:输出Tensor,类型与Xn输入相同

42

Mul

二元点乘

【输入】

  • A:输入Tensor,类型:float32,第1个操作数
  • B:输入Tensor,类型:float32,第2个操作数

【约束】

支持两组输入的维度不一致,进行广播操作(广播即维度补齐),目前支持以下几种广播场景:

  • NCHW+NCHW(备注, 两个维度相同tensor)
  • NCHW+scalar
  • NCHW+W, CHW+W, HW+W(备注, W维度做broadcast)
  • NCHW + NCH1, CHW + CH1, HW + H1
  • CHW + C1W(备注,H维度做broadcast)

对于两个输入维度个数不相同的场景,需要将维度补齐到四维。例如,x.shape=(1, 5, 6, 7) 和 y.shape=(6, 7)需要将y的维度补齐到4维,即y.shape=(1, 1, 6, 7)。

说明:两个Tensor的输入顺序可以互换。

【输出】

C:输出Tensor,类型同B

43

Neg

对Tensor的每个元素取反,y=-x

【输入】

X:输入Tensor,类型:float32

【约束】

【输出】

Y:输出Tensor,类型:float32

44

NonMaxSuppression

进行非最大值压缩在指定框中

【输入】

  • boxes:输入Tensor,类型:float32
  • scores:输入Tensor,类型:float32
  • max_output_boxes_per_class(可选):输入Tensor,类型:int32
  • iou_threshold(可选):输入Tensor,类型:float32
  • score_threshold(可选):输入Tensor,类型:float32

【约束】

  • max_output_boxes_per_class、iou_threshold、score_threshold仅支持权值输入
  • max_output_boxes_per_class不支持取0
  • iou_threshold不支持取0和1

【输出】

selected_indices:输出Tensor,类型:float32

45

Or

对输入Tensor的每个元素取逻辑或

【输入】

  • A:输入Tensor,类型:bool
  • B:输入Tensor,类型:bool

【约束】

input输入不支持NCHW格式数据

【输出】

C:输出Tensor,类型:bool

46

PRelu

根据下面公式做运算

f(x) = slope * x for x < 0, f(x) = x for x >= 0

【输入】

  • X:输入Tensor,类型:float32
  • slope:输入Tensor,类型:float32

【约束】

  • slope输入必须是常量
  • slope必须是标量或者1C11或C11的形式,其中C是X输入的channel
  • X输入必须是4D

【输出】

Y:输出Tensor,类型同X输入

47

Pad

对输入Tensor做补pad处理

【输入】

  • data:输入Tensor,类型:float32
  • pads:输入Tensor,类型:int64
  • constant_value:optional,输入Tensor,标量,类型同data输入,默认值0

【参数】

  • mode:string,支持的模式
  • 在opset 7~10中pads输入是参数
  • 在opset 7~10中存在value参数,表示要被填充的值

【约束】

  • mode仅支持constant模式
  • pads输入必须是常量

【输出】

output:输出Tensor,类型:float32

48

Pow

逐个元素做指数运算

【输入】

  • X:输入Tensor,类型:float32, int32
  • Y:输入Tensor,类型:float32, int32

【约束】

无限制

【输出】

Z:输出Tensor,类型:float32, int32

49

Range

创建一个Tensor,Tensor的数据以start开始,以delta作为步长扩展直到limit

【输入】

  • start:输入Tensor,标量,类型:float32,int32,输出数据的起始值
  • limit:输入Tensor,标量,类型:float32,int32,输出数据的上限值
  • delta:输入Tensor,标量,类型:float32,int32,步长

【约束】

  • 输入start必须是常量
  • 输入limit必须是常量
  • 输入delta必须是常量

【输出】

output:输出Tensor,标量,类型float32,int32

50

ReduceLogSumExp

计算输入Tensor沿着指定轴上的对数和的指数

【输入】

data:输入Tensor,类型:float32

【参数】

  • axes:list of ints,指定的轴
  • keepdims:ints,是否保留指定轴上的维度,默认值是1

【约束】

【输出】

reduced:输出Tensor

51

ReduceMax

计算输入Tensor沿着指定轴上的最大值

【输入】

data:输入Tensor,类型:float32

【参数】

  • axes:list of ints,指定的轴
  • keepdims:ints,是否保留指定轴上的维度,如果是1,保留,如果是0,则不保留,默认值是1

【约束】

axes参数为必选参数

【输出】

reduced:输出Tensor

52

ReduceMean

计算输入Tensor沿着指定轴上的平均值

【输入】

data:输入Tensor,类型:float32

【参数】

  • axes:list of ints,指定的轴
  • keepdims:ints,是否保留指定轴上的维度,如果是1,保留,如果是0,则不保留,默认值是1

【约束】

axes参数为必选参数

【输出】

reduced:输出Tensor

53

ReduceMin

计算输入Tensor沿着指定轴上的最小值

【输入】

data:输入Tensor,类型:float32

【参数】

  • axes:list of ints,指定的轴
  • keepdims:int,是否保留维度,默认值1

【约束】

  • axes参数为必选参数
  • keepdims参数仅支持设置为1

【输出】

reduced:输出Tensor

54

ReduceSum

计算输入Tensor沿着指定轴上的和

【输入】

data:输入Tensor,类型:float32

【参数】

  • axes:list of ints,指定的轴
  • keepdims:int,是否保留维度,默认值1

【约束】

axes参数为必选参数

【输出】

reduced:输出Tensor

55

Relu

整流线性单位函数

【输入】

X:输入Tensor,类型:float32

【约束】

【输出】

Y:输出Tensor,类型同X输入

56

Reshape

改变输入Tensor的维度

【输入】

  • data:输入Tensor,类型:float32,int32,int64,bool
  • shape:输入Tensor,类型:int32,int64

【约束】

shape输入必须是常量

【输出】

reshaped:输出Tensor,类型同data输入

57

Resize

调整输入tensor的维度

【输入】

  • X:输入Tensor,类型:float32
  • roi:输入Tensor,类型:float32

【参数】

  • align_corners:bool,缺省值为false
  • half_pixel_centers:bool,缺省值为false

【约束】

  • scales和sizes两个输入仅支持权值输入,不支持非权值输入
  • coordinate_transformation_mode支持half_pixel,pytorch_half_pixel。其中pytorch_half_pixel仅支持resized_length>1场景,resized_length <=1场景报错
  • cubic_coeff_a仅支持默认值-0.75
  • exclude_outside仅支持默认值0
  • extrapolation_value仅支持默认值:0.0
  • mode 支持nearest, linear
  • nearest_mode仅支持默认值round_prefer_floor
  • 不支持crop功能
  • roi是无效输入时,仅支持权值输入
  • 其他场景报错处理

【输出】

Y:输出Tensor,类型同data输入

58

RoiAlign

对关注的区域做对齐操作

【输入】

  • X:输入Tensor,类型:float32
  • roi:输入Tensor,类型:int32
  • batch_indices:输入Tensor,类型:int32

【参数】

  • mode:string,缺省值为avg
  • output_height:int32,缺省值为1
  • output_width:int32,缺省值为1
  • sampling_ratio:int32,缺省值为1
  • spatial_scale:float32,缺省值为1.0

【约束】

mode仅支持avg模式

【输出】

Y:输出Tensor,类型同X输入

59

Round

逐个元素取整

【输入】

X:输入Tensor,类型:float32

【约束】

无限制

【输出】

Y:输出Tensor,类型同X输入

60

ScatterElements

绘制散点图

【输入】

  • data:输入Tensor,类型:float32, int8, uint8, bool
  • indices:输入Tensor,类型:int32, int64
  • updates:输入Tensor,类型:float32, int8, uint8, bool

【参数】

axis:int,缺省值为0

【约束】

【输出】

output:输出Tensor,类型同data输入

61

Selu

对输入做下面公式计算

y = gamma * (alpha * e^x - alpha) for x <= 0, y = gamma * x for x > 0

【输入】

x:输入Tensor,类型:float32

【参数】

  • alpha:float32,缺省值为1.67326
  • gamma:float32,缺省值为1.0507

【约束】

仅支持alpha和gamma参数是默认值

【输出】

y:输出Tensor,类型同x输入

62

Shape

获取输入Tensor的维度,并输出

【输入】

data:输入Tensor,类型:float32,int32,bool,uint8

【约束】

不支持指定为输出节点

【输出】

shape:输出Tensor,data输入的维度

63

Sigmoid

sigmoid函数,y = 1 / (1 + exp(-x))

【输入】

X:输入Tensor,类型:float32

【约束】

【输出】

Y:输出Tensor,类型同X输入

64

Sign

sign函数(符号函数),

当x>0,sign(x)=1

当x=0,sign(x)=0

当x<0,sign(x)=-1

【输入】

input:输入Tensor,类型:float32

【约束】

【输出】

output:输出Tensor,类型和维度同input输入

65

Sin

计算正弦

【输入】

input:输入Tensor,类型:float32

【约束】

无限制

【输出】

output:输出Tensor,类型与x输入相同

66

Slice

对输入Tensor沿着指定轴切分

【输入】

  • data:输入Tensor,类型:float32,int32,uint8,bool
  • starts:1-D输入Tensor,类型:int64,int32,表示在指定轴上切分的起始位置
  • ends:1-D输入Tensor,类型:int64,int32,表示在指定轴上切分的结束位置
  • axes:optional,1-D输入Tensor,类型:int64,int32,指定需要切分的轴,缺省表示沿所有的维度切分,负值表示从后往前统计维度值
  • steps:optional,1-D输入Tensor,类型:int64,int32,切分的步长

【参数】

opset9及之前版本,axes,ends,starts是参数

【约束】

  • 输入starts,ends,axes,steps必须为常量
  • 不支持切分后,存在维度为0的场景

【输出】

output:输出Tensor,切分后的Tensor

67

Softmax

归一化逻辑函数

【输入】

input:输入Tensor,类型:float32

【参数】

axis:int,输入变为2D维度时的轴,默认值1

【约束】

axis参数仅支持最后一维

【输出】

output:输出Tensor,类型和维度同input输入

68

Softplus

softplus激活函数,y = ln(exp(x) + 1)

【输入】

X:1-D输入Tensor,类型:float32

【约束】

【输出】

Y:1-D输出Tensor,类型同X输入

69

Split

在指定轴上做拆分,输出多个tensor

【输入】

input:输入Tensor,类型: float32

【参数】

  • axis:int, 缺省值为0
  • split: list of ints 值必须大于等于0

【约束】

【输出】

outputs:D输出Tensor,类型同输入

70

Sqrt

求平方根

【输入】

X:输入Tensor,类型:float32

【约束】

【输出】

Y:输出Tensor,类型同X输入

71

Squeeze

在指定轴上降维

【输入】

data:输入Tensor,类型:float32

【参数】

axes:list of ints,轴,缺省值为所有维度,负值表示从后往前遍历

【约束】

【输出】

squeezed:输出Tensor,类型:float32

72

Sub

逐个元素的减法运算

【输入】

  • A:输入Tensor,类型:float32 ,第1个操作数
  • B:输入Tensor,类型:float32 ,第2个操作数

【约束】

【输出】

C:输出Tensor,类型:float32

73

Tan

正切函数

【输入】

input:输入Tensor,类型:float32

【约束】

【输出】

output:输出Tensor,类型:float32

74

Tanh

双曲函数

【输入】

input:输入Tensor,类型:float32

【约束】

【输出】

output:输出Tensor,类型:float32

75

Tile

对输入Tensor做平铺操作

【输入】

  • input:输入Tensor,类型:float32,int8,uint8,bool
  • repeats:1-D输入Tensor,类型:int32, int64

【约束】

repeats输入必须是常量

【输出】

output:输出Tensor,类型同input输入

76

TopK

实现最大或者最小的K个元素在指定的轴上。

【输入】

  • X:输入Tensor,类型:float32
  • K:输入Tensor,类型:int32, int64

【参数】

  • axis:int,缺省值为-1
  • largest:int,缺省值为1
  • sorted:int,缺省值为1

【约束】

K输入必须是常量

【输出】

  • values:输出Tensor,类型:float32
  • indices: 输出Tensor,类型:int32

77

Transpose

根据属性perm中各个轴的排列顺序,对输入Tensor和shape做相应转换

【输入】

data:输入Tensor,类型:float32

【参数】

perm:list of ints,轴调整排列的顺序表

【约束】

【输出】

transposed:输出Tensor,类型:float32

78

Unsqueeze

在指定轴上扩维

【输入】

data:输入Tensor,类型:float32,int32,uint8,bool

【参数

axes:list of ints,指定需要扩维的轴

【约束】

仅支持axes个数为1

【输出】

expanded:输出Tensor,类型:float32,int32,uint8,bool

79

Upsample

上采样

【输入】

  • X:输入Tensor,类型:float32
  • scales:输入Tensor,类型:float32

【参数】

  • mode:string,模式,有2个插值模式,nearest模式和linear模式(包含bilinear, trilinear等),默认是nearest模式
  • 在opset7中scales输入是参数

【约束】

  • 仅支持nearest、bilinear两种插值模式
  • X仅支持4D输入Tensor
  • N、C方向的scale仅支持等于1.0

【输出】

Y:输出Tensor,类型:float32

80

ReduceL2

(V510新增)

计算输入Tensor沿着指定轴上的欧几里得范数

【输入】

data:输入Tensor,类型:float32

【参数】

  • axes:list of ints,指定的轴
  • keepdims:int,是否保留维度,默认值1

【约束】

  • 只支持keepdims=1的情形,所以输入和输出的realDim相等
  • 输入N <= 65535
  • axes范围:支持realDim为3和realDim为4时对最后一维做reduceL2

【输出】

reduced:输出Tensor

 

 

 

 

 

posted @ 2023-05-11 18:26  吴建明wujianming  阅读(1018)  评论(0编辑  收藏  举报