3. Operation Semantics

3.1. Abs

对输入张量逐元素进行绝对值计算得到输出张量, output = |input|

输入
  • inputT

    输入张量

输出
  • outputT

    输出 input 的绝对值

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.2. Acos

对输入张量逐元素进行反余弦计算得到输出张量, output = std::acos(input)

输入
  • inputT

    输入张量

输出
  • outputT

    输出 input 的反余弦值

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.3. Add

对输入张量逐元素进行求和计算得到输出张量, output = lhs + rhs

属性
  • broadcast_dimensionslist of ints

    (可选)指定需要被广播的维度

输入
  • lhsT

    左加数

  • rhsT

    右加数

输出
  • outputT

    输出 lhs + rhs 的和

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.4. And

逐元素做逻辑与运算, output = lhs && rhs

属性
  • broadcast_dimensionslist of ints

    (可选)指定需要被广播的维度

输入
  • lhsT

    逻辑运算的第一个输入

  • rhsT

    逻辑运算的第二个输入

输出
  • outputT

    输出 lhs && rhs 的值

类型限制
  • Ttensor(bool)

    限制输入和输出类型为布尔

3.5. ArgMax

计算输入张量元素沿所提供维度的最大元素索引。如果 keepdims 为 True,则输出张量与输入张量的 rank 相同。如果 keepdims 为 False ,那么输出张量就会被裁剪掉指定的维度。如果 select_last_index 为 True (默认为 False),那么如果输入中出现的最大值不止一次,则会选择最后出现的最大值的索引。否则,将选择第一次出现的索引。输出张量的类型为整型。

属性
  • axisint(默认为0)

    (可选)计算最大元素索引的轴,可接受范围为: [0, r-1],r为输入张量的rank

  • keepdimsbool(默认为true)

    (可选)是否保留缩小的维度,默认为true表示保留该维度

  • select_last_indexbool(默认为false)

    (可选)如果输入中出现多次最大值,是选择最后一个索引还是第一个索引。 默认为false表示选择第一次出现的索引。

输入
  • inputT

    输入张量

输出
  • outputtensor(int64)

    整型的输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入类型为数值类型

3.6. ArgMin

计算输入张量元素沿所提供维度的最小元素索引。如果 keepdims 为 True,则输出张量与输入张量的 rank 相同。如果 keepdims 为 False ,那么输出张量就会被裁剪掉指定的维度。如果 select_last_index 为 True (默认为 False),那么如果输入中出现的最小值不止一次,则会选择最后出现的最小值的索引。否则,将选择第一次出现的索引。输出张量的类型为整型。

属性
  • axisint(默认为0)

    (可选)计算最小元素索引的轴,可接受范围为: [0, r-1],r为输入张量的rank

  • keepdimsbool(默认为true)

    (可选)是否保留缩小的维度,默认为true表示保留该维度

  • select_last_indexbool(默认为false)

    (可选)如果输入中出现多次最小值,是选择最后一个索引还是第一个索引。 默认为false表示选择第一次出现的索引。

输入
  • inputT

    输入张量

输出
  • outputtensor(int64)

    整型的输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入类型为数值类型

3.7. Asin

对输入张量逐元素进行反正弦计算得到输出张量, output = std::asin(input)

输入
  • inputT

    输入张量

输出
  • outputT

    输出 input 的反正弦值

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.8. Asinh

对输入张量逐元素进行反双曲正弦计算得到输出张量, output = std::asinh(input)

输入
  • inputT

    输入张量

输出
  • outputT

    输出 input 的反双曲正弦值

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.9. Atan

对输入张量逐元素进行反正切计算得到输出张量, output = std::atan(input)

输入
  • inputT

    输入张量

输出
  • outputT

    输出 input 的反正切值

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.10. Atan2

对输入张量 lhs/rhs 逐元素进行反正切计算得到输出张量, output = std::atan2(lhs/rhs)

输入
  • lhsT

    反正切运算的第一个输入

  • rhsT

    反正切运算的第二个输入

输出
  • outputT

    输出 lhs/rhs 的反正切值

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.11. Atanh

对输入张量逐元素进行反双曲正切计算得到输出张量, output = std::atanh(input)

输入
  • inputT

    输入张量

输出
  • outputT

    输出 input 的反双曲正切值

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.12. AveragePool

根据池化核大小、步长大小和填充长度对输入张量 X 进行平均池化处理。平均池化根据池化核大小计算输入张量子区域中所有值的平均值,并将数据下采样到输出张量 Y 中,以便进一步处理。

来源: https://github.com/onnx/onnx/blob/rel-1.14.1/docs/Operators.md#AveragePool

属性
  • dimslist of ints

    指定在哪个维度应用平均池化

  • kernel_shapelist of ints

    每个轴的池化核大小

  • ceil_modebool(默认为false)

    (可选)使用 ceil 还是 floor(默认)来计算输出形状

  • count_include_padbool(默认为false)

    (可选)计算边缘值时是否包含填充像素

  • strideslist of ints

    (可选)每个维度的步长,如果不存在,则默认为 1

  • paddinglist of ints

    (可选)对输入张量每个维度的起点和终点的填充,可以是大于或等于 0 的任意值,该值表示在相应维度的起点和终点部分添加的像素数。 padding 的格式如下[x1_begin, x2_begin…x1_end, x2_end,…], 其中 xi_begin 表示在维度i的开始部分添加的像素数,xi_end 表示在维度i的结束部分添加的像素数。

    此属性不能与 auto_pad 属性同时使用。如果不存在,每个空间轴的开始和结束处的填充默认为 0。

  • auto_padstring

    (可选)自动填充模式,必须为NOTSET、SAME_UPPER、SAME_LOWER或VALID。

    NOTSET表示使用显式填充。

    SAME_UPPER或SAME_LOWER表示填充输入,使得每个维度d: output_shape[d] = ceil(input_shape[d] / strides[d])。 在填充数量为偶数时,填充在input两边平分,而在填充数量为奇数时,SAME_UPPER表示在input的末尾添加额外的填充,SAME_LOWER表示在input的起始添加额外的填充。

    VALID则表示不做填充。

输入
  • inputT

    输入张量

输出
  • outputT

    整型的输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.13. BatchNormGrad

计算 BatchNormGradOp 的梯度,对于特征维度中的每个特征,该操作会计算输入张量、偏置和比例在所有其他维度上的梯度。

来源: https://www.tensorflow.org/xla/operation_semantics#batchnormgrad

属性
  • epsilonfloat

    为避免除以零而使用的ε值

  • feature_indexint

    输入张量中特征维度的索引

输入
  • inputT

    输入张量

  • scaleT

    缩放张量,shape为[C],C是输入张量的通道数

  • meanT

    批输入的平均值

  • varianceT

    批输入的方差

  • grad_outputT

    传递给 BatchNormTraining 的梯度

输出
  • grad_inputT

    输入的梯度

  • grad_scaleT

    缩放的梯度

  • grad_biasT

    偏置的梯度

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.14. BatchNormInference

对于特征维度中的每个特征,BatchNormInference会计算所有其他维度的均值和方差,并使用均值和方差对输入张量中的每个元素进行归一化处理。BatchNormInference 等同于调用 BatchNormTraining,但不计算每个批次的均值和方差,而是使用输入的均值和方差作为估计值, 以减少推理的延迟。 output = (input - input_mean) / sqrt(input_var + epsilon) * scale + bias

来源: https://www.tensorflow.org/xla/operation_semantics#batchnorminference

属性
  • epsilonfloat

    为避免除以零而使用的ε值

  • feature_indexint

    输入张量中特征维度的索引

输入
  • inputT

    输入张量

  • scaleT

    缩放张量,shape为[C],C是输入张量的通道数

  • biasT

    偏置张量,shape为[C],C是输入张量的通道数

  • meanT

    批输入的平均值

  • varianceT

    批输入的方差

输出
  • outputT

    输出与输入张量的形状相同,并且包含每个批次的归一化值。

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.15. BatchNormTraining

对于特征维度中的每个特征,BatchNormTraining会计算所有其他维度的均值和方差,并使用均值和方差对输入张量中的每个元素进行归一化处理。 输出张量将按以下计算步骤得到:

batch_mean = ReduceMean(X, axis=feature_index)

batch_var = ReduceVar(X, axis=feature_index)

output = (input - batch_mean) / sqrt(batch_var + epsilon) * scale + B

来源: https://www.tensorflow.org/xla/operation_semantics#batchnormtraining

属性
  • epsilonfloat

    为避免除以零而使用的ε值

  • feature_indexint

    输入张量中特征维度的索引

输入
  • inputT

    输入张量

  • scaleT

    缩放张量,shape为[C],C是输入张量的通道数

  • biasT

    偏置张量,shape为[C],C是输入张量的通道数

输出
  • outputT

    输出与输入张量的形状相同,并且包含每个批次的归一化值。

  • meanT

    批输入的平均值

  • varianceT

    批输入的方差

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.16. BCELoss

3.17. BitcastConvert

逐元素将输入张量从一种类型bitcast到目标类型,输入和输出张量的大小必须一致。

来源: https://www.tensorflow.org/xla/operation_semantics#bitcastconverttype

输入
  • inputT

    输入张量

输出
  • outputT1

    具有目标类型的输出张量

类型限制
  • T : 输入支持所有类型

  • T1 : 输出支持所有类型

3.18. Broadcast

通过复制输入张量中的数据为输入张量添加维数。

来源: https://www.tensorflow.org/xla/operation_semantics#broadcast

属性
  • broadcast_sizeslist of ints

    新维度的大小

输入
  • inputT

    输入张量

输出
  • outputT

    增加新维度的输出张量

类型限制
  • T : 输入和输出支持所有类型

3.19. BroadcastInDim

通过复制张量中的数据来扩展张量的大小和rank。

来源: https://www.tensorflow.org/xla/operation_semantics?hl=en#broadcastindim

属性
  • broadcast_dimensionslist of ints

    指明了输入形状的每个维度对应于目标形状中的哪个维度。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • T :

    输入和输出支持所有类型

3.20. Cbrt

对输入张量逐元素进行立方根计算得到输出张量。 output = std::cbrt(input)

输入
  • inputT

    输入张量

输出
  • outputTo

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入类型为数值类型

  • Totensor(float16), tensor(float), tensor(double)

    限制输出类型为浮点型

3.21. Ceil

逐元素对输入张量进行向上取整。 output = std::ceil(input)

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入类型为浮点型

3.22. Cholesky

计算一批对称(Hermitian)正定矩阵的Cholesky分解。

来源: https://www.tensorflow.org/xla/operation_semantics?hl=en#cholesky

属性
  • lowerbool

    输出的矩阵是上三角矩阵或下三角矩阵,true表示下三角矩阵。

输入
  • inputT

    输入张量,浮点类型且rank>2。输入被视为一批矩阵,其中除了最后的2个维度之外的所有维度都是批维度。

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.23. Clamp

给定一个输入以及最小和最大值,如果输入在最小和最大之间,则返回该输入,否则返回最小值。如果输入低于此范围,或者如果输入为高于该范围。 也就是说, clamp(a,x,b)=min(max(a,x),b)。三者的形状必须相同,或者广播形式在一定的限制下,min和max可以是T类型的标量。

输入
  • minT

    N维张量,代表最小值

  • inputT

    N维输入张量

  • maxT

    N维张量,代表最大值

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.24. Compare

根据指定的 comparison_direction 来执行lhs和rhs之间的比较。

属性
  • comparison_directionstring

    字符串,有六种类型的比较。其中 "NE"表示不相等,"EQ"表示相等,"GE"表示大于或等于,"GT"表示大于,"LE"表示小于或等于,"LT"表示小于。

输入
  • lhsT

    第一个输入张量

  • rhsT

    第二个输入张量

输出
  • outputTo

    输出张量

类型限制
  • T : 输入支持所有类型

  • Totensor(bool)

    限制输出类型为布尔

3.25. Complex

逐元素将一对实数和虚数转换为复数。

输入
  • lhsT

    复数张量的实部

  • rhsT

    复数张量的虚部

输出
  • outputTo

    复数张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入类型为浮点型

  • Totensor(complex)

    限制输出类型为复数型

3.26. Concatenate

沿着指定的维度连接一组张量。

来源: https://www.tensorflow.org/xla/operation_semantics#concatenate

属性
  • dimensionint

    用于指定要在张量之间进行连接的维度。负值表示从后面开始计算。接受范围为: [-r,r-1],其中r=rank(inputs)

输入
  • inputslist of T

    N个张量,N>=1。

输出
  • outputT

    输出张量

类型限制
  • T : 输入和输出支持所有类型

3.27. Constant

用来产生一个常数张量。

属性
  • valueT

    常数张量

输出
  • outputT

    输出常数张量

类型限制
  • T : 输入和输出支持所有类型

3.28. Conv

计算神经网络中使用的卷积。这里,卷积可以被认为是n维窗口在n维基础区域上移动,并且对窗口的每个可能位置进行计算。

来源: https://www.tensorflow.org/xla/operation_semantics?hl=en#conv_convolution

属性
  • input_batch_dimensionint

    该维度中的每个坐标表示一个独立的输入,对其进行卷积。

  • input_feature_dimensionint

    基础区域中的每个位置(y, x)都有一个与其相关的向量,该向量进入该维度

  • input_spatial_dimensionslist of ints

    描述定义窗口移动经过的基本区域的n个空间维度。

  • kernel_input_feature_dimensionint

    此维度的大小乘以 feature_group_count 应等于lhs的特征维度的大小。

  • kernel_output_feature_dimensionint

    输出的特征维度。

  • kernel_spatial_dimensionslist of ints

    描述定义在基础区域上移动的n-d窗口的n个空间维度。

  • output_batch_dimensionint

    输出的批维度。

  • output_feature_dimensionint

    输出的特征维度。

  • output_spatial_dimensionslist of ints

    描述输出的n个空间维度。

  • window_strideslist of ints

    指定卷积窗口在空间维度上的步幅。 例如,如果空间维度中第一个维度的步幅为3,则窗口只能放置在第一个空间索引可被3整除的坐标处。

  • paddinglist of ints

    卷积核操作填充大小。 填充量可以为负数,负填充的绝对值表示在进行卷积之前要从指定维度中删除的元素数量。

  • lhs_dilationlist of ints

    指定了要应用于lhs中的每个维度的膨胀因子。如果膨胀因子是d,那么d-1个空洞隐含地放置在该维度中的每个项之间从而增加张量的大小。这些空洞填充了一个无运算值,对于卷积来说相当于填充为零。

  • rhs_dilationlist of ints

    指定了要应用于rhs中的每个维度的膨胀因子。如果膨胀因子是d,那么d-1个空洞隐含地放置在该维度中的每个项之间,从而增加张量的大小。这些空洞填充了一个无运算值,对于卷积来说相当于填充为零。

  • feature_group_countint

    用于分组卷积,是输入和输出特征维度的除数。 如果 feature_group_count 大于1,则意味着输入和输出特征维度以及 rhs 输出特征维度被均匀地分成 feature_group_count 个组,每组由连续的特征子序列组成。 rhs的输入特征维度等于lhs输入特征维度除以feature_group_count(因此它已经具有一组输入特征的大小)。第i个组一起用于计算 feature_group_count 个单独的卷积,这些卷积的结果在输出特征维度中被连接在一起。

  • batch_group_countint

    用于分组filters的反向传播。 如果batch_group_count大于1,则意味着输出批维度的大小应为输入批维度/batch_group_count的大小。batch_group_count 必须是输出特征大小的除数。

  • auto_padstring(默认””)

    (可选)自动填充属性,参考 AveragePool

输入
  • lhsT

    输入张量,rank=n+2

  • rhsT

    输入卷积核权重张量,rank=n+2

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.29. ConvBias

此操作与Conv执行相同的操作,只是指定了偏差并将其添加到卷积的结果中。

属性
  • input_batch_dimensionint

    该维度中的每个坐标表示一个独立的输入,对其进行卷积。

  • input_feature_dimensionint

    基础区域中的每个位置(y, x)都有一个与其相关的向量,该向量进入该维度

  • input_spatial_dimensionslist of ints

    描述定义窗口移动经过的基本区域的n个空间维度。

  • kernel_input_feature_dimensionint

    此维度的大小乘以 feature_group_count 应等于lhs的特征维度的大小。

  • kernel_output_feature_dimensionint

    输出的特征维度。

  • kernel_spatial_dimensionslist of ints

    描述定义在基础区域上移动的n-d窗口的n个空间维度。

  • output_batch_dimensionint

    输出的批维度。

  • output_feature_dimensionint

    输出的特征维度。

  • output_spatial_dimensionslist of ints

    描述输出的n个空间维度。

  • window_strideslist of ints

    指定卷积窗口在空间维度上的步幅。 例如,如果空间维度中第一个维度的步幅为3,则窗口只能放置在第一个空间索引可被3整除的坐标处。

  • paddinglist of ints

    卷积核操作填充大小。 填充量可以为负数,负填充的绝对值表示在进行卷积之前要从指定维度中删除的元素数量。

  • lhs_dilationlist of ints

    指定了要应用于lhs中的每个维度的膨胀因子。如果膨胀因子是d,那么d-1个空洞隐含地放置在该维度中的每个项之间,从而增加张量的大小。这些空洞填充了一个无运算值,对于卷积来说,相当于填充为零。

  • rhs_dilationlist of ints

    指定了要应用于rhs中的每个维度的膨胀因子。如果膨胀因子是d,那么d-1个空洞隐含地放置在该维度中的每个项之间,从而增加张量的大小。这些空洞填充了一个无运算值,对于卷积来说相当于填充为零。

  • feature_group_countint

    用于分组卷积,是输入和输出特征维度的除数。 如果 feature_group_count 大于1,则意味着输入和输出特征维度以及 rhs 输出特征维度被均匀地分成 feature_group_count 个组,每组由连续的特征子序列组成。 rhs的输入特征维度等于lhs输入特征维度除以 feature_group_count (因此它已经具有一组输入特征的大小)。第i个组一起用于计算 feature_group_count 个单独的卷积,这些卷积的结果在输出特征维度中被连接在一起。

  • batch_group_countint

    用于分组filters的反向传播。 如果 batch_group_count 大于1,则意味着输出批维度的大小应为输入批维度/batch_group_count的大小。 batch_group_count 必须是输出特征大小的除数。

  • auto_padstring(默认””)

    (可选)自动填充属性,参考 AveragePool

输入
  • lhsT

    输入张量,rank=n+2

  • rhsT

    输入卷积核权重张量,rank=n+2

  • biasT

    输入偏差张量,rank=1

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.30. Convert

类似C++的static_cast,将输入张量的dtype逐元素转化为输出张量的dtype。 输入和输出的形状必须匹配且不能是元组。注意:从int64到int32的转换保留了符号位,而不是简单地取低位。例如 convert<int64_t,int32_t>(0x8FFFFFFF1FFFFFFF)=0x9FFFFFFF

输入
  • inputT

    输入张量

输出
  • outputT1

    输出张量

类型限制
  • T : 输入支持所有类型

  • T1 : 输出支持所有类型

3.31. Copy

获得输入张量的一个拷贝。

输入
  • inputT

    输入张量

输出
  • outputT

    输出 input 的拷贝结果

类型限制
  • T : 输入和输出支持所有类型

3.32. Cos

对输入张量逐元素进行余弦计算得到输出张量。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.33. CTCLoss

计算连续时间(未分段)序列和目标序列之间的损失。CTCLoss对输入与目标可能对齐的概率求和,产生相对于每个输入节点可微分的损失值。输入与目标是多对一,因此限制目标序列的长度必须小于等于输入长度。

来源: https://pytorch.org/docs/stable/generated/torch.nn.CTCLoss.html#torch.nn.CTCLoss

属性
  • blank(默认为0)int

    空白标签

输入
  • inputT

    输入张量,形状为(T, N, C)或(T, C),其中T=输入长度,N=批大小,C=类数(包括空白)。以输出的对数概率形式传入。

  • targetsTi

    形状[N, S]或(sum(target_lengths)),其中N=批大小,S=最大目标长度,如果形状为[N, S]。它代表了目标序列,目标序列中的每个元素都是一个类索引,并且目标索引不能为空(默认值=0)。在[N, S]形式中,目标被填充到最长序列的长度,并堆叠在一起。在[sum(target_lengths)]形式中,要求目标不填充并在一维上连接。

  • input_lengthsTi

    大小(N)或()的元组或张量,其中N=批大小。它表示输入的长度(每个必须≤T)。并且为每个序列指定长度, 以在假设序列被填充为相等长度的情况下实现掩码。

  • target_lengthsTi

    大小(N)或()的元组或张量,其中N=批大小。它表示目标的长度。为每个序列指定长度,以在序列被填充为相等长度的情况下实现掩码。如果目标形状是[N, S],则target_length实际上是每个目标序列的终止索引S_N,使得target_N=批次中每个目标的target[N, 0:S_N]。每个长度必须≤S。如果目标被给定为1d张量,则target_length必须加起来为张量的总长度。

输出
  • lossT

    标量数据。假设reduction为”none”,如果输入是批处理则为(N), 如果输入不是批处理的则为()。其中N=批大小。

  • alphaT

    计算中需要的数据。

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

  • Titensor(int32), tensor(int64)

    限制targets类型为整型

3.34. CustomCall

3.35. DepthToSpace

3.36. Div

逐元素求商, output = lhs / rhs

属性
  • broadcast_dimensionslist of ints

    (可选)指定需要被广播的维度

输入
  • lhsT

    被除数

  • rhsT

    除数

输出
  • outputT

    输出 lhs / rhs 的商

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.37. Dot

在左乘数的第二个维度(如果rank为1则为第一个维度)和右乘数的第一个维度执行乘积之和,执行相乘的维度大小必须相同。 实际上,Dot可以用来完成向量间的点乘,向量/矩阵乘法或者矩阵/矩阵乘法。

来源: https://www.tensorflow.org/xla/operation_semantics#dot

输入
  • lhsT

    左乘数,只能为一维或者二维张量

  • rhsT

    右乘数,只能为一维或者二维张量

输出
  • outputT

    输出乘积,确切的输出维度取决于输入的维度:

    vector [n] dot vector [n] = > scalar

    matrix [m x k] dot vector [k] = > vector [m]

    matrix [m x k] dot matrix [k x n] = > matrix [m x n]

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.38. DotGeneral

DotGeneral与Dot相同,但是允许为左乘数和右乘数指定收缩维度和批维度。 在左乘数和右乘数的收缩维度上执行乘积之和,批维度保持不变。 左乘数和右乘数的收缩维度的值可以不同,但指定的维度个数必须保持一致。 左乘数和右乘数的批维度则必须保持相同的值。

来源: https://www.tensorflow.org/xla/operation_semantics#dotgeneral

属性
  • lhs_batching_dimensionslist of ints

    左乘数的批维度

  • rhs_batching_dimensionslist of ints

    右乘数的批维度

  • lhs_contracting_dimensionslist of ints

    左乘数的收缩维度

  • rhs_contracting_dimensionslist of ints

    右乘数的收缩维度

输入
  • lhsT

    左乘数

  • rhsT

    右乘数

输出
  • outputT

    输出乘积,确切的输出维度取决于维度属性: [b0, m, k] dot [b0, k, n] = >[b0, m, n], LBD = RBD = 0, LCD = 2, RCD = 1 (LBD is lhs_batching_dimensions)

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.39. DotGeneralBias

继承自DotGeneral,计算完dot后,给输出张量在特征维度上添加偏置。

属性
  • lhs_batching_dimensionslist of ints

    左乘数的批维度

  • rhs_batching_dimensionslist of ints

    右乘数的批维度

  • lhs_contracting_dimensionslist of ints

    左乘数的收缩维度

  • rhs_contracting_dimensionslist of ints

    右乘数的收缩维度

输入
  • lhsT

    左乘数

  • rhsT

    右乘数

  • bias: T1

    偏置张量,必须为一维张量

输出
  • outputT

    输出添加了偏置的乘积张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

  • T1tensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制偏置类型为数值类型

3.40. Dropout

3.41. DynamicBroadcastInDim

此操作与BroadcastInDim执行相同的操作,只是通过shape动态指定结果形状。

属性
  • broadcast_dimensionslist of ints

    列表,指明了输入形状的每个维度对应于目标形状中的哪个维度。

输入
  • inputT

    输入张量

  • shapeTs

    形状张量,指定输出形状

输出
  • outputT

    输出张量

类型限制
  • T : 输入和输出支持所有类型

  • Tstensor(int32), tensor(int64)

    限制shape类型为整型

3.42. DynamicIota

创建具有指定形状的张量,张量中的数值从0开始,按照指定维度逐一递增,DynamicIota的输出张量的形状是动态输入的。

来源: https://www.tensorflow.org/xla/operation_semantics#iota

属性
  • iota_dimensionint

    沿哪个维度递增

输入
  • shapeint

    输出张量的形状,一维张量

输出
  • outputT

    形状为 shape 的输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输出类型为数值类型

3.43. DynamicPad

给定一个待填充数据的输入张量,指定各个维度起始和末尾要填充的数量、 (可选)填充模式、(可选)常量值,就可以生成一个填充后的输出张量。

属性
  • modeenum

    支持四种填充模式: PAD_VALUEPAD_EDGEPAD_REFLECTPAD_SYMMETRIC

    PAD_VALUE: 使用输入 padding_value 指定的常量值填充

    PAD_EDGE: 使用输入张量的边缘值填充

    PAD_REFLECT: 使用输入张量沿每个轴的起始值和末尾值的镜像进行填充,起始值和末尾值为镜面, [n-2, n-1, n, (n-1), (n-2)], ()内为填充值

    PAD_SYMMETRIC: 使用输入张量沿每个轴的起始值和末尾值的对称值进行填充, [n-2, n-1, n, (n), (n-1)],()内为填充值

输入
  • inputT

    输入张量

  • padsint

    每个维度的起始和末尾要填充或者移除(负值)的数量,格式为: [x1_begin, x2_begin, ..., x1_end, x2_end,...]

  • padding_valueT

    modePAD_VALUE 时,填充的常量值

输出
  • outputT

    填充后的输出张量

类型限制
  • T : 输入和输出支持所有类型

3.44. DynamicReshape

改变输入张量的形状为指定形状(第二个输入),指定形状中最多有一个维度值可以为 -1,在这种情况下,维度值是根据张量的大小和其余维度推断出来的。指定形状的维度值也可以为 0,在这种情况下,输出张量维度值保持不变(即取自输入张量), 指定形状可以为空,这意味着输入张量将转换为标量。输入张量的形状和输出张量的形状必须具有相同的元素数。

如果设置了属性 allowzero=1,则指定的形状同时包含 0和 -1 是无效的,因为与 -1 相对应的维度值无法唯一确定。

属性
  • allowzeroint(默认为0)

    默认情况下,当 shape 输入中的任何值等于 0时,输出张量相应的维度值将从输入张量中动态复制。 allowzero=1 则表示,如果 shape 输入中的任何值被设置为 0,0将被保留为输出张量对应的维度值,类似于 NumPy。

输入
  • inputT

    输入张量

  • shapeint

    输出张量的形状,一维张量

输出
  • outputT

    reshape后形状为 shape 的输出张量

类型限制
  • T : 输入和输出支持所有类型

3.45. DynamicSlice

从输入张量的动态起始索引处提取一个子张量,每个维度的切片大小由 slice_sizes 指定,每 个维度切片的起始和终点为: [start, start + size)

来源: https://www.tensorflow.org/xla/operation_semantics#dynamicslice

属性
  • slice_sizeslist of ints

    N(等于输入张量维度) 个整数的列表,指定每个维度切片的大小

输入
  • inputT

    输入张量

  • start_indicesTind

    rank必须为1,维度值等于输入张量的rank

输出
  • outputT

    输出切片的子张量

类型限制
  • T : 输入和输出支持所有类型

  • Tindtensor(int32), tensor(int64)

    限制索引类型为整型

3.46. DynamicUpdateSlice

在切片的形状中用 update 的值进行覆盖,其他位置为输入张量的值, update 的shape决定了输出子张量的shape。

来源: https://www.tensorflow.org/xla/operation_semantics#dynamicupdateslice

输入
  • inputT

    输入张量

  • updateT

    update的每个维度必须严格大于0,且对于每个维度d都保持 start[d] + update.dims[d] <= input.dims[d] 以避免对越界的维度进行更新

  • start_indicesTind

    rank必须为1,维度值等于输入张量的rank

输出
  • outputT

    输出切片的子张量,与输入张量shape相同

类型限制
  • T : 输入和输出支持所有类型

  • Tindtensor(int32), tensor(int64)

    限制索引类型为整型

3.47. Elu

激活函数,对输入张量逐元素按照以下公式计算得到输出张量:

f(x) = alpha * (exp(x) - 1.) for x < 0, f(x) = x for x >= 0.

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#Elu

属性
  • alphafloat

    Elu中的系数。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.48. Erf

3.49. Exp

对输入张量逐元素进行指数计算得到输出张量

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.50. Expm1

对输入张量逐元素按照以下公式计算得到输出张量:

y=exp(x) - 1

输入
  • inputT

    输入张量

输出
  • outputTo

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint32), tensor(int8), tensor(int32), tensor(float16), tensor(float), tensor(double)

    限制输入类型为数值类型

  • To* tensor(float16), tensor(float), tensor(double)*

    限制输出类型为浮点型

3.51. Floor

逐元素对输入张量进行向下取整。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.52. Gather

Gather等同于一组(个数为batchsize)相同 slice_sizes 的DynamicSlice得到一个维度为batchsize + slice_sizes的输出张量,在此基础上start_indices和多次DynamicSlice得到的张量都可以隐含Transpose语义,collapsed_slice_dims隐含了Squeeze语义。 首先根据输入 start_indices 中切片的起始索引和属性 index_vector_dim 以及 start_index_map 计算 input 中切片窗口的起始索引值。 其次根据属性 slice_sizes 和起始索引值进行多次DynamicSlice操作得到切片, 并根据属性 collapsed_slice_dims 折叠切片相应的维度。 最后根据属性 offset_dims 将输出 output 形状维度中的切片维度Transpose到相应位置。

来源: https://www.tensorflow.org/xla/operation_semantics?hl=en#gather

属性
  • index_vector_dimint

    指定 start_indices 中包含起始位置的维度。 如果 index_vector_dim = start_indices.rank , 则隐式地认为 start_indices 的尾部有一个值为 1 的维度。 例如,如果 start_indices 形状为[6, 7],且 index_vector_dim = 2 ,那么就隐含地认为 start_indices 形状为[6, 7, 1]。

  • start_index_maplist of ints

    start_indices 中每个index (大小可小于input.rank) 数组中每个值映射到 input 完整index的位置,其他未映射位置为0,从而得到完整的 input index,用来作为DynamicSlice的起始索引

  • collapsed_slice_dimslist of ints

    属性 slice_sizes 需要折叠的维度,必须满足 slice_sizes 中对应的size为1,折叠以后在 output 中不存在对应维度,即Squeeze语义

  • offset_dimslist of ints

    output 维度包含batch维度和折叠后 slice_sizes 维度两部分, offset_dims 明确了折叠后 slice_sizes 维度在 output 维度中的位置,batch维度则按照顺序见缝插针放入 output 维度,此处可隐含Transpose语义

  • slice_sizeslist of ints

    同DynamicSlice中的 slice_sizes ,数组大小为 input 的秩,对应 input 每个维度上slice的元素个数

  • indices_are_sortedbool(默认为false)

    输入 scatter_indices 中的索引是否已经排序

输入
  • inputT

    输入张量

  • start_indicesT

    slice起始位置,可包含多个batch维度和一个index维度,多数情况下batch维度在前,index维度在最后,即[batch1, batch2, …, index_size],index_size所在位置由index_vector_dim指定

输出
  • outputT

    输出张量, 与输入张量具有相同的形状

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(half), tensor(bfloat16), tensor(float), tensor(double).

    限制输入和输出类型为数值张量

3.53. GeGlu

激活函数,对输入张量逐元素按照以下公式计算得到输出张量:

GEGLU(a,b)=a times gelu(b),其中input沿dim一分为二,形成 abgelu 是gelu函数, times 是矩阵的逐元素乘积。

属性
  • approximatebool

    GeGlu近似算法, false:不使用近似; true:使用tanh近似。

  • dimint

    用于拆分输入的维度。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.54. Gelu

激活函数,对输入张量逐元素按照以下公式计算得到输出张量:

y=0.5*x*(1+erf(x/sqrt(2)))。如果属性 approximate 设置为true, 则使用的估计函数为 y=0.5*x*(1+Tanh(sqrt(2/p)*(x+0.044715*x^3))

属性
  • approximatebool

    Gelu近似算法, false:不使用近似; true:使用tanh近似。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.55. Gemm

3.56. GeneralSplit

3.57. GetTupleElement

3.58. GlobalAveragePool

对于输入张量,GlobalAveragePool对同一通道中的值进行平均池化。该过程等价于核大小为输入张量的空间维度的AveragePool。

属性
  • dimslist of ints

    使用dims来指定H和W的dim

输入
  • inputT

    来自上一个算子的输入数据张量;在onnx中,图像的形状[N x C x H x W],对于非图像情况,形状为[N x C x D1 x D2…Dn],其中N是批次大小。在我们的实现中,输入的布局可能是[N x H x W x C]或[N x D1 x D2…x C]

输出
  • outputT

    通过输入张量池化输出数据张量。输出张量与输入具有相同的秩。输出形状[N x C]的两个维度与输入相同, 而其他维度均为1。

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.59. GlobalMaxPool

3.60. Glu

激活函数,对输入张量逐元素按照以下公式计算得到输出张量:

GLU(a,b)=a times sigmoid(b),其中 input 沿 dim 一分为二,形成 absigmoid 是sigmoid函数, times 是矩阵之间的逐元素乘积。

属性
  • dimint

    用于分割输入的维度。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.61. GridSample

给定输入张量和网格张量, 使用网格中的像素位置和对应的输入张量的像素值计算输出张量。 对于具有形状[N, C, H, W]的输入张量和具有形状[N, H_out, W_out, 2]的网格张量, 输出张量将的形状将为[N, C, H_out, W_out]。

对于每个输出位置[N, C, H_out, W_out], 网格中[N, H_out, W_out]用来指定输入像素的位置x和y, 根据这两个位置和输入张量的像素值插值输出[N, C, H_out, W_out]。

来源: https://github.com/onnx/onnx/blob/main/docs/Changelog.md#GridSample-16

属性
  • modeint

    插值模式, 支持最近邻插值(NEAREST)和双线性插值(LINEAR)两种模式

  • align_cornersbool

    对齐角点, 如果align_carners=true, 则极值(-1和1)被认为是输入的角点像素的中心点。如果align_carners=false, 则它们被认为是指输入的角点像素的角点。

  • padding_modeenum

    超出网格边界的值的填充方式, 参考 Pad

输入
  • inputT

    输入张量, 支持形状为[N, C, H, W]

  • gridTg

    网格张量, 支持形状为[N, H_out, W_out, 2]

输出
  • outputT

    输出插值后的张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

  • Tgtensor(float)

    限制网格输入类型为浮点型

3.62. GroupNorm

3.63. Gtu

激活函数,对输入张量逐元素按照以下公式计算得到输出张量:

Gtu(a, b) = tanh(a) times sigmoid(b) ,其中 times 表示矩阵之间的逐元素乘积。

来源: https://arxiv.org/pdf/1612.08083.pdf

属性
  • dimint

    沿着dim维度将输入张量平均分为a和b两部分

输入
  • inputT

    输入张量,指定的dim维度大小必须是2的倍数。

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double).

    限制输入和输出类型为浮点型

3.64. HardSigmoid

激活函数,对输入张量逐元素按照以下公式计算得到输出张量:

y = max(0, min(1, slope * x + offset))

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#HardSigmoid.

属性
  • slopefloat

    slope的值

  • offsetfloat

    offset的值

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.65. HardSwish

激活函数,对输入张量逐元素按照以下公式计算得到输出张量:

y = x * max(0, min(1, alpha * x + beta)) = x * HardSigmoid<alpha, beta>(x) ,其中alpha = 1/6, beta = 0.5。

来源: https://github.com/onnx/onnx/blob/rel-1.14.1/docs/Operators.md#HardSwish

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.66. If

3.67. Imag

对输入张量逐元素计算复数的虚部得到输出张量,输入的类型必须是复数或浮点型。

输入
  • inputT

    输入张量

输出
  • outputT

    输出 input 的虚部

类型限制
  • Ttensor(float16), tensor(float), tensor(double), tensor(complex)

    限制输入和输出类型为复数或浮点型

3.68. InstanceNorm

执行实例归一化, 参考论文https://arxiv.org/abs/1607.08022

y = scale * (x - mean) / sqrt(variance + epsilon) + bias 其中mean和variance是对每个实例的每个通道计算得到的。InstanceNorm通常用于对图像像素进行归一化。

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#InstanceNormalization

属性
  • epsilonfloat

    为避免除以零而使用的ε值

输入
  • inputT

    输入张量,对于图像情况,形状为 (N, C, H, W) 或 (N, H, W, C) 其中 N 是批次大小,C 是通道数,H和W是图片的高度和宽度。 对于非图像情况,形式为 (N x C x D1 x …Dn) 或 (N x D1 x D2 … Dn x C),其中 N 是批次大小

  • scaleT

    大小为C的一维张量作为scale输入。

  • biasT

    大小为C的一维张量作为bias输入。

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.69. Iota

创建具有指定形状的张量,张量中的数值从0开始,按照指定维度逐一递增。

来源: https://www.tensorflow.org/xla/operation_semantics#iota

属性
  • iota_dimensionint

    沿哪个维度递增

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输出类型为数值类型

3.70. IsFinite

对输入张量逐元素进行判断是否是有限的。 output = std::isfinite(input)

来源: https://pytorch.org/docs/stable/generated/torch.isfinite.html#torch.isfinite

输入
  • inputT

    输入张量

输出
  • outputTo

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入类型为浮点型

  • Totensor(float16), tensor(float), tensor(double), tensor(int8), tensor(int32), tensor(bool)

    限制输出类型为数值和布尔

3.71. LayerNorm

整体计算可以分为两个阶段。第一个阶段是标准化(standardization), 它使得标准化后的元素具有零均值和单位方差。标准化所需的计算可以用以下方程描述: Mean = Reduce<dimensions=normalized_axes, computation='MEAN'>(X) D = Sub(X, Mean) DD = Mul(D, D) Var = Reduce<dimensions=normalized_axes, computation='MEAN'>(DD) VarEps = Add(Var, epsilon) StdDev = Sqrt(VarEps) InvStdDev = Reciprocal(StdDev) Normalized = Mul(D, InvStdDev) 其中, normalized_axes为[axis, …, X的维度 - 1]。 变量Var和StdDev分别表示方差和标注差。

第二个阶段通过以下方式对第一阶段的结果进行缩放和偏移: NormalizedScaled = Mul(Normalized, Scale) Y = Add(NormalizedScaled, B)

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#LayerNormalization.

属性
  • axisint64

    第一阶段标准化的维度。axis的允许范围为 [-r, r),r为输入张量的rank,负值表示从后向前计算维度。

  • epsilonfloat

    为避免除以零而使用的ε值

输入
  • inputT

    输入张量

  • scaleT

    缩放张量

  • biasT

    偏置张量

输出
  • outputT

    标准化后的输出张量

  • meanT

    训练过程中保存的均值,用于加速梯度计算

  • rstdT

    训练过程中保存的标准差的倒数,用于加速梯度计算

类型限制
  • Ttensor(float16), tensor(float), tensor(double).

    限制输入和输出类型为浮点型

3.72. LeakyRelu

激活函数,对输入张量逐元素按照以下公式计算得到输出张量

y = alpha * x , if x < 0y = x, if x >= 0

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#leakyrelu.

属性
  • alphafloat

    权重系数

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值张量

3.73. Log

对输入张量逐元素进行自然对数计算得到输出张量, output = std::log(input)

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#Log

输入
  • inputT

    输入张量

输出
  • outputT

    输出 input 的自然对数值

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.74. Log1p

对输入张量逐元素加1进行自然对数计算得到输出张量, output = std::log1p(input)

来源: https://pytorch.org/docs/stable/generated/torch.log1p.html?highlight=log1p#torch.log1p

输入
  • inputT

    输入张量

输出
  • outputT

    输出 input 的元素值加1后的自然对数值

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.75. Map

在给定的一个或一组输入张量上应用一个子图,生成一个同维度的输出张量。输出中的每个元素都是由输入张量中相应元素按子图流程计算所得到的。

来源: https://www.tensorflow.org/xla/operation_semantics?hl=en#map

属性
  • dimensionslist of ints

    指明映子图作用的维度。

  • computationgraph

    一个子图,用于指定输入张量的计算流程。

输入
  • inputlist of T0..T{N-1}

    列表,输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输出类型为数值类型

3.76. Max

对输入张量逐元素进行最大值计算得到输出张量。所有输入和输出必须具有相同的数据类型和形状。

输入
  • lhsT

    左值张量

  • rhsT

    右值张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输出类型为数值类型

3.77. MaxPool

在输入张量input上,根据核大小(kernel_shape)、步长(strides)和填充(padding)长度来计算最大池化。最大池化包括根据核大小计算输入张量的子集的所有值的最大值,并将数据下采样到输出张量Y中以供进一步处理。使用显式填充(padding),或使用自动填充(auto_pad)会导致输出空间形状的计算方式不同。

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#MaxPool

属性
  • kernel_shapelist of ints

    沿每个轴的核大小。

  • strideslist of ints

    (可选)沿着每个轴的步长。该属性步幅默认为1。

  • paddinglist of ints

    (可选)沿每个轴填充起点和终点,可以取大于或等于0的任何值。该值表示添加到相应轴的开始部分和结束部分的像素数。padding的格式应该如下[x1_begin,x2_begin…x1_end,x2_end,…],其中xi_begin是在轴’i’的开始处添加的像素的数目,xi_end是在轴`i’的结束处添加的图像的数目。此属性不能与auto_pad属性同时使用。如果不存在,则沿每个空间轴的起点和终点的填充默认为0。

  • dilationslist of ints

    (可选)膨胀(dilations)声明沿着内核的每个轴的填充间隔大小。默认为1。

  • auto_padstring (默认为NOTSET)

    (可选)自动填充属性, 参考 AveragePool

  • ceil_modebool(默认为false)

    (可选)当窗口无法完全框选输入时,输出是否向上取整

  • return_indicesbool(默认为false)

    是否返回输出值在输入张量中的索引。

  • storage_orderint(默认为0)

    张量的存储顺序。0是按行存储,1是按列存储。此属性仅用于将n元索引值转换为单个整数值,以产生第二个输出。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

  • IndicesT1

    最大值位置索引

类型限制
  • Ttensor(float16), tensor(float), tensor(double), tensor(int8), tensor(uint8)

    限制输入和输出类型为浮点型和8位整型

  • T1tensor(int64)

    限制 Indices 类型为64位整型

3.78. MaxRoiPool

输入input张量和感兴趣区域(ROIs),并在每个感兴趣区域(ROI)上应用最大池化,从而产生一个4-D的输出张量,其形状如下 [num_RoIs,channels,pooled_shape[0],pooled_shape[1]]

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#MaxRoiPool

属性
  • layoutDimensionsLayout

    用于指定输入布局是[N x C x H x W]或[N x H x W x C]。

  • pooled_shapelist of ints

    ROI池输出形状[H x W]。

  • spatial_scalefloat

    乘法空间比例因子,用于将ROI坐标从其输入比例转换为池化时使用的比例。

输入
  • inputT

    输入张量,维度为[N x C x H x W]或[N x H x W x C],其中N是批量大小,C是通道数,H和W是数据的高度和宽度。

  • roisT

    ROI感兴趣区域。其应是一个形状为(num_rois, 5)的二维张量,例如:[[batch_id, x1, y1, x2, y2], …]的2-D张量。

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.79. Min

对输入张量逐元素进行最小值计算得到输出张量。所有输入和输出必须具有相同的数据类型和形状。

输入
  • lhsT

    左值张量

  • rhsT

    右值张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输出类型为数值类型

3.80. Mish

激活函数,对输入张量逐元素按照以下公式计算得到输出张量:

mish(x) = x * tanh(softplus(x)) = x * tanh(ln(1 + e^{x}))

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#Mish

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输出类型为浮点型

3.81. Neg

对输入张量逐元素进行相反数计算得到输出张量。

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#Neg

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float), tensor(int32), tensor(int8), tensor(int16), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为有符号数张量

3.82. NMS

迭代地删除与先前选择框的交并比(IOU)大于 iou_threshold 的框。分数小于 score_threshold 的边界框也将被删除。框边界格式由属性 center_point_box 指定。注意,该算法不感知原点在坐标系中的位置,即对坐标系进行正交变换和平移变换不会导致选择不同的框。输出 selected_index 是一组索引,用于表示NMS所保存的边界框。

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#NonMaxSuppression

属性
  • max_output_boxes_per_classint64

    整数,标量,表示每批每类要选择的最大框数。默认为0,表示没有输出。

  • iou_thresholdfloat

    浮点,标量,用于决定框是否交并比过高的阈值。值范围[0,1]。默认为0。

  • score_thresholdfloat

    浮点,标量,表示根据分数决定何时删除框的阈值。

  • center_point_boxint32

    用整数表示方框数据的格式,有0和1两种选择。默认值为0,值为0时,框数据表示为[y1, x1, y2, x2],其中[y1, x1]和[y2, x2]是对角坐标,并且坐标可以被提供为归一化的(即位于区间[0, 1]中)或绝对的,主要用于TF模型。值为1时框数据以[x_center, y_center, width, height]的形式提供,主要用于Pytorch模型。

输入
  • boxesfloat

    形状为[num_batches, spatial_dimension, 4]的输入张量,单框数据格式由center_point_box表示。

  • scoresfloat

    形状为[num_batches, num_classes, spatial_dimension]的输入张量,表示每个框的得分。

输出
  • selected_indicesint64

    从boxes张量中保留的框索引,形如[num_selected_index, 3],所选索引格式为[batch_index, class_index, box_index]。

3.83. NonZero

返回非零元素的索引值数组,该数组是一个2-D张量,其中每一行表示单个非零元素的索引值坐标。NonZero的行为类似于torch.NonZero。

来源: https://pytorch.org/docs/stable/generated/torch.nonzero.html

输入
  • inputT

    输入张量

输出
  • outputint64

    输出张量

类型限制
  • T : 输入支持所有类型

3.84. Not

对输入张量逐元素进行逻辑非计算得到输出张量。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(bool)

    限制输入和输出类型为布尔张量

3.85. Or

对输入张量逐元素进行逻辑或计算得到输出张量, output = lhs || rhs

属性
  • broadcast_dimensionslist of ints

    (可选)指定需要被广播的维度

输入
  • lhsT

    逻辑运算的第一个输入

  • rhsT

    逻辑运算的第二个输入

输出
  • outputT

    输出 lhs || rhs 的值

类型限制
  • Ttensor(bool)

    限制输入和输出类型为布尔

3.86. Pad

给定一个待填充数据的输入张量,指定各个维度起始和末尾要填充的数量、 填充模式(mode)、常量值(padding_value),就可以生成一个填充后的输出张量。

属性
  • modeenum

    支持四种填充模式: PAD_VALUEPAD_EDGEPAD_REFLECTPAD_SYMMETRIC

    PAD_VALUE: 使用输入 padding_value 指定的常量值填充

    PAD_EDGE: 使用输入张量的边缘值填充

    PAD_REFLECT: 使用输入张量沿每个轴的起始值和末尾值的镜像进行填充,起始值和末尾值为镜面, [n-2, n-1, n, (n-1), (n-2)], ()内为填充值

    PAD_SYMMETRIC: 使用输入张量沿每个轴的起始值和末尾值的对称值进行填充, [n-2, n-1, n, (n), (n-1)], ()内为填充值

  • edge_padding_lowint

    低端边缘填充,指定在每个维度的索引0旁添加的填充量。边缘填充的数量可以是负数——负数填充的绝对值表示要从指定维度中删除的元素数量。

  • edge_padding_highint

    高端边缘填充,指定在每个维度的索引最大值旁添加的填充量。

  • interior_paddingint

    指定在每个维度中的任意两个元素之间添加的填充量;它可能不是负值。内部填充在逻辑上发生在边缘填充之前,因此在边缘填充为负的情况下,会从内部填充操作后的数据中删除元素。

输入
  • inputT

    输入张量

  • padding_valueT

    modePAD_VALUE 时的填充值,为标量。

输出
  • outputT

    填充后的输出张量。

类型限制
  • T : 输入和输出支持所有数值类型。

3.87. PartialReduce

3.88. PopulationCount

逐元素计算输入张量的二进制表示中1的个数。

输入
  • inputT

    输入张量

输出
  • outputint

    输出张量

类型限制
  • T : tensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64)

输入支持无符号整型。

3.89. Pow

对输入张量逐元素按照以下公式计算得到输出张量:

f(x)=x^exponent

输入
  • lhsT

    输入张量,作为底数。

  • rhsT1

    指数张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    输入和输出支持浮点型和整型。

  • T1tensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    指数张量支持浮点型和整型。

3.90. PRelu

激活函数,将输入张量和斜率张量作为输入,并产生一个输出,对输入张量逐元素按照以下公式计算得到输出张量:

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

来源:https://github.com/onnx/onnx/blob/main/docs/Operators.md#PRelu

输入
  • inputT

    输入张量

  • slopeT

    斜率张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double), tensor(uint32), tensor(uint64), tensor(int32), tensor(int64)

    输入和输出支持浮点型和整型

3.91. Real

对输入张量逐元素计算复数的实部得到输出张量。

输入
  • inputT

    输入张量

输出
  • outputT1

    输出复数实部张量

类型限制
  • Ttensor(complex64), tensor(complex128), tensor(float16), tensor(float), tensor(double)

    输入类型限制为复数或浮点型

  • T1tensor(float16), tensor(float), tensor(double)

    输出类型限制为浮点型

3.92. RealDynamicSlice

对输入张量进行切片,与slice算子区别在于,边界框是由动态输入的start_indices,limit_indices和strides进行定义,切片范围为 [start, end)。 输入axes则指定进行切片的维度,如果axes为空,则对所有维度进行切片,否则对指定维度切片。

输入
  • inputT

    输入张量

  • start_indicesTind

    一维张量,包含指定维度的切片起始索引,如axes为空,则维度大小等于输入张量的rank

  • limit_indicesTind

    一维张量,包含指定维度的切片终止索引,如axes为空,则维度大小等于输入张量的rank

  • stridesTind

    一维张量,包含切片输入步长,切片将在指定维度d上隔strides[d]取一次值,如axes为空,则维度大小等于输入张量的rank规定 strides> 0

  • axesTind

    一维张量,指定要进行切片的维度,负值表示从后向前计算维度,范围为 [-r, r-1]

输出
  • outputT

    输出切片的子张量

类型限制
  • T : 输入和输出支持所有类型

  • Tindtensor(int32), tensor(int64)

    限制索引类型为整型

3.93. Reduce

对输入张量的指定维度进行指定函数的计算,使得指定维度还原为标量。输出张量的rank为 rank(output) = rank(input) - len(dimensions)。当输入张量个数大于1时,计算函数仅支持max、min,且仅在第一个输入张量中进行计算,第2-N个输入张量按照第一个张量的max或min值的索引处取值。

属性
  • dimensionslist of ints

    指定还原维度

  • typestring

    (可选)用于指定计算类型

  • computationenum

    计算类型,支持UPDATE、ADD、SUB、MUL、DIV、MIN、MAX、AND、OR、XOR、ARGMIN、ARGMAX、L2、COUNT

输入
  • inputslist of T

    输入张量

  • init_valueslist of T

    标量,每个维度计算的初始值

输出
  • outputslist of T

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.94. ReduceWindow

对输入张量的每个窗口中的所有元素应用Reduce函数,产生一个张量作为输出。 每个输出张量的元素数与窗口的有效位置数相同,池化层可以用ReduceWindow来表示。 与Reduce类似,computation总是通过左侧的init_values进行。 仅当computation为ARGMIN或ARGMAX时,支持N个输入张量。

来源: https://www.tensorflow.org/xla/operation_semantics#reducewindow。 与xla的语义不同的是,我们将padding拆解为auto_pad和ceil_mode两个属性。

属性
  • computationenum

    reduce计算方式,窗口中的所有元素以computation的定义进行计算。 支持的计算包括: UPDATE、ADD、SUB、MUL、DIV、MIN、MAX、AND、OR、XOR、ARGMIN、ARGMAX、L2、COUNT

  • window_dimensionslist of ints

    窗口的维度大小,数组大小为输入张量的rank

  • window_strideslist of ints(默认为1)

    (可选)指定窗口移动的步长,数组大小为输入张量的rank

  • base_dilationslist of ints(默认为1)

    (可选)指定输入张量行内填充的值,数组大小为输入张量的rank

  • window_dilationslist of ints(默认为1)

    (可选)指定窗口行内填充的值,数组大小为输入张量的rank

  • auto_padstring(默认为NOTSET)

    (可选)自动填充模式,必须为NOTSET、SAME_UPPER、SAME_LOWER或VALID。

    NOTSET表示使用显式填充。

    SAME_UPPER或SAME_LOWER表示填充输入,使得每个维度d output_shape[d] = ceil(input_shape[d] / strides[d])。 在填充数量为偶数时,填充在input两边平分,而在填充数量为奇数时,SAME_UPPER表示在input的末尾添加额外的填充,SAME_LOWER表示在input的起始添加额外的填充。

    VALID则表示不做填充。

  • ceil_modebool(默认为false)

    (可选)当窗口无法完全框选输入时,输出是否向上取整

输入
  • inputslist of T

    输入张量

  • init_valueslist of T

    标量,做Reduce操作应用的初始值,详情见 Reduce

输出
  • outputslist of T

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.95. Relu

激活函数,对输入张量逐元素按照以下公式计算得到输出张量:

y = max(0, x)

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float), tensor(int32), tensor(int8), tensor(int16), tensor(int64), tensor(float16), tensor(double)

    限制输入和输出类型为有符号型数值类型

3.96. Relu6

同Relu,对输入张量逐元素按照以下公式计算得到输出张量:

y = min(max(0, x), 6),限制最大输出为6。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float), tensor(int32), tensor(int8), tensor(int16), tensor(int64), tensor(float16), tensor(double)

    限制输入和输出类型为有符号型数值类型

3.97. Rem

对输入张量逐元素进行余数计算得到输出张量

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.98. Reshape

改变输入张量的形状为输出形状。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • T : 输入和输出支持所有类型

3.99. Resize

调整输入张量的大小。输出张量中的每个位置通过坐标转换映射到输入张量中并计算原位置邻域(又称采样位置)的加权平均值。如果输入 sizes 没有被指定,则输出张量的每个维度值为:

output_dimension = floor(input_dimension * (roi_end - roi_start) * scale)

来源: https://github.com/onnx/onnx/blob/rel-1.14.1/docs/Operators.md#Resize

属性
  • modeenum

    三种插值模式: “NEAREST”(默认)、”LINEAR”和 “CUBIC”。”LINEAR”模式包括一维张量的线性插值和 N-D 张量的 N 次线性插值(例如,二维张量的双线性插值)。”CUBIC”模式包括一维张量的立方插值和 N-D 张量的 N 次立方插值(例如,二维张量的双立方插值)。

  • coordinate_transformation_modeenum

    该属性描述了如何将输出张量中的坐标转换为原始输入张量中的坐标。

    每个维度的坐标都是单独转换的。以 x 轴为例进行说明,x_resized 表示输出张量中 x 轴的坐标,x_original 表示原始输入张量中 x 轴的坐标,length_original 表示原始输入张量在 x 轴上的长度,length_resized 表示输出张量在 x 轴上的长度, scale = length_resized / length_original

    如果 coordinate_transformation_mode 为 HALF_PIXEL(默认):

    x_original = (x_resized + 0.5) / scale - 0.5

    如果 coordinate_transformation_mode 为 ASYMMETRIC:

    x_original = x_resized / scale

    如果 coordinate_transformation_mode 为 PYTORCH_HALF_PIXEL:

    x_original = length_resized > 1 ? (x_resized + 0.5) / scale - 0.5 : 0

    如果 coordinate_transformation_mode 为 TF_HALF_PIXEL_FOR_NN:

    x_original = (x_resized + 0.5) / scale

    如果 coordinate_transformation_mode 为 ALIGN_CORNERS:

    x_original = x_resized * (length_original - 1) / (length_resized - 1)

    如果 coordinate_transformation_mode 为 TF_CROP_AND_RESIZE:

    x_original = length_resized > 1 ? start_x * (length_original - 1) + x_resized * (end_x - start_x) * (length_original - 1) / (length_resized - 1) : 0.5 * (start_x + end_x) * (length_original - 1)

  • exclude_outside**

    如果设置为 true,张量之外的采样位置的权重将设置为 0,权重将重新归一化,使其总和为 1。

  • nearest_modeenum(默认为ROUND_PREFER_FLOOR)

    (可选)四种模式: ROUND_PREFER_FLOOR(默认,即向下取整一半)、ROUND_PREFER_CEIL(即向上取整一半)、FLOOR、CEIL,仅用于最邻近插值模式。它表示如何从 x_original 获取输入张量中 “最近 “的像素,因此该属性只有在 mode 为 NEAREST 时才有效。

  • extrapolation_valuefloat(默认为0.0)

    (可选)当 coordinate_transformation_mode 为 TF_CROP_AND_RESIZE 且 x_original 不在 [0, length_original - 1] 范围内时,该值将被用作相应的输出值。

  • cubic_coeff_afloat(默认为-0.75)

    (可选)用于”CUBIC”插值模式的系数”a”, 该属性仅在模式为 CUBIC 时有效。

输入
  • inputT1

    输入张量

  • roiT2

    一维张量,形式为[start1, …, startN, end1, …, endN],其中 N 是输入张量的rank。RoIs 的坐标在输入图像的坐标系中进行归一化处理。只有当 coordinate_transformation_mode 为 TF_CROP_AND_RESIZE 时才会生效。

  • scalestensor(float)

    每个维度的缩放倍数。如果小于 1,则进行下采样,否则进行上采样。 scales 的元素个数应与输入张量的rank相同。必须指定 scalessizes 中的一个,如果两个都指定则会报错。如果需要指定 sizes ,用户可以在此操作符的输入列表中将 scales 置为空。

  • sizestensor(int)

    输出张量的目标大小, sizes 的元素个数应与输入张量的rank相同, scalessizes 只能指定一个。

输出
  • outputT1

    输出目标大小的张量

类型限制
  • T1 : 输入和输出支持所有类型

  • T2tensor(float16), tensor(float), tensor(double)

    限制roi类型为浮点型

3.100. Reverse

按照指定维度反转输入张量中元素的顺序,生成相同形状的输出张量。输入张量中每个元素的多维索引(指定维度)都会以转换后的索引存储到输出张量中,多维索引的转换是通过反转每个要反转维度的索引实现的(即如果大小为 N 的维度是反转维度之一,则其索引 i 将转换为 N - 1 - i)。

来源: https://www.tensorflow.org/xla/operation_semantics#rev_reverse

属性
  • dimensionslist of ints

    指定要反转的维度

输入
  • inputT

    输入张量

输出
  • outputT

    对指定维度进行反转后的输出张量

类型限制
  • T : 输入和输出支持所有类型

3.101. ReverseSequence

将一个输入张量先按照批次维度进行分割,然后将分割后的子张量在指定的时间维度上进行翻转操作,对于在批次维度上的每个分片 i,ReverseSequence会反转时间维度上的前sequence_lens[i]个元素,并将索引超出 sequence_lens[i] 的元素复制到输出张量中。

属性
  • batch_axisint(默认为1)

    (可选)指定批次维度。只能为 1(默认值)或 0 。

  • time_axisint(默认为0)

    (可选)指定时间维度。只能为 0(默认值)或 1 。

输入
  • inputT

    输入张量,要求 rank >= 2

  • sequence_lenstensor(int)

    指定批次中序列长度的张量。它的形状是 [batch_size]

输出
  • outputT

    输出张量

类型限制
  • T : 输入和输出支持所有类型

3.102. RngNormal

用按照正态分布 N(mu, sigma) 生成的随机数构建给定形状的输出,正态分布的参数由 mean 和 scale 指定。

来源: https://www.tensorflow.org/xla/operation_semantics?hl=en#rngnormal

属性
  • seedint(默认为1)

    (可选)不指定的情况下,用时间戳生成随机种子。否则,使用 seed 的值作为随机种子。

输入
  • muT

    标量,指定生成数的平均值

  • sigmaT

    标量,指定生成数的标准差

  • shapeT1

    指定输出张量的形状

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制类型为浮点型

  • T1tensor(int32), tensor(int64)

    限制 shape 类型为整型

3.103. RngUniform

用在区间 [a, b) 上按均匀分布生成的随机数构建给定形状的输出,参数和输出元素类型必须是布尔类型、积分类型或浮点类型,且类型必须一致

来源: https://www.tensorflow.org/xla/operation_semantics?hl=en#rnguniform

属性
  • seedint(默认为1)

    (可选)不指定的情况下,用时间戳生成随机种子。否则,使用 seed 的值作为随机种子。

输入
  • aT

    标量,指定区间的下限

  • bT

    标量,指定区间的上限

  • shapeT1

    指定输出张量的形状

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制类型为数值类型

  • T1tensor(int32), tensor(int64)

    限制 shape 类型为整型

3.104. RoiAlign

Mask R-CNN论文中描述的感兴趣区域特征聚集操作。RoiAlign传入输入张量 X 和感兴趣区域(rois),对每个感兴趣区域进行池化处理,产生一个形状为[num_rois, C, output_height, output_width]的四维张量。在将原始图像转换为特征图和将特征图转换为 RoI 特征的过程中,RoiAlign 将通过去除量化来避免错位,在每个 ROI 中,通过双线性插值法直接计算采样位置的值。

属性
  • modeenum

    池化方法,支持两种模式:平均池化 ROIALIGN_AVG 和最大值池化 ROIALIGN_MAX ,默认为平均池化

  • coordinate_transformation_modeint

    允许的值是 ROIALIGN_HALF_PIXELROIALIGN_OUTPUT_HALF_PIXEL 。使用 ROIALIGN_HALF_PIXEL 可将输入坐标的像素点偏移-0.5(推荐使用)。使用 ROIALIGN_OUTPUT_HALF_PIXEL (输出半像素)可省略输入的像素移动(使用此值可实现向后兼容)。

  • output_heightint(默认为1)

    池化输出张量的高度

  • output_widthint(默认为1)

    池化输出张量的宽度

  • sampling_ratioint(默认为0)

    用于计算在插值网格中每个池化输出值的采样点数。如果大于0,则使用 sampling_ratio x sampling_ratio 网格点。如果等于0,则使用自适应网格点数(计算公式为 ceil(roi_width / output_width),高度也是如此)。

  • spatial_scalefloat(默认为1.0)

    空间比例因子,用于将 ROI 坐标从其输入空间比例转换为特征聚集时使用的比例,即输入特征图相对于输入图像的空间比例。例如,默认值为 1.0f。

输入
  • inputT1

    输入张量

  • roisT1

    输入张量

  • batch_indicesT2

    输入张量

输出
  • outputT1

    RoI 池化输出形状为[num_roi, C, output_height, output_width]的四维张量。

类型限制
  • T1tensor(float16), tensor(float), tensor(double)

    限制类型为浮点型

  • T1tensor(int64)

    限制 batch_indices 类型为整型

3.105. Round

对输入张量逐元素进行四舍五入计算得到输出张量,即为每个值找出最接近的整数,如:Round(0.5) = 1; Round(1.5) = 2; Round(2.3) = 2; Round(2.5) = 3。输出张量的形状和类型与输入张量相同。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.106. RoundNearestEven

对输入张量逐元素进行最近舍入计算得到输出张量,对.5的舍入上,采用取偶数的方式,如:RoundNearestEven(0.5) = 0; RoundNearestEven(1.5) = 2; RoundNearestEven(2.5) = 2

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.107. Rsqrt

对输入张量逐元素进行到倒平方根计算得到输出张量, output = 1 / input^0.5,如果input为负数或者0, 则返回NAN。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.108. ScatterND

input 张量中进行多次选定切片窗口位置, 然后将 updates 张量中相应的切片散射到选定切片窗口, 窗口中每个元素散射时按 computation 计算方式进行。 首先根据输入 start_indices 中散射切片的起始索引和属性 index_vector_dim 以及 scatter_dims_to_operand_dims 计算 input 中散射切片窗口的起始索引值。 其次根据属性 updates 中的散射切片与 input 中相应起始索引位置的窗口进行 computation 方式散射, 最终得到输出 output

来源: https://www.tensorflow.org/xla/operation_semantics#scatter

属性
  • computationenum

    scatter计算方式, 计算窗口中的所有元素以computation的定义进行计算。 支持的计算包括: UPDATE, ADD, SUB, MUL, DIV, MIN, MAX, AND, OR, XOR, ARGMIN, ARGMAX, L2, COUNT

  • index_vector_dimint

    指定 start_indices 中index所在维度,有效值范围[0, start_indices.rank],当 index_vector_dim == start_indices_rank 时index_size为1,当 index_vector_dim < start_indices.rank - 1 时需要进行Transpose将index_vector_dim挪到最后(最右边)维度

  • update_window_dimslist of ints

    输入 updates 维度中用于更新切片维度的更新维度索引集合

  • inserted_window_dimslist of ints

    插入维度的维度索引集合, 与更新维度相结合得到更新切片维度

  • scatter_dims_to_operand_dimslist of ints

    start_indices 中每个index (大小可小于input.rank) 数组中每个值映射到 input 完整index的位置,其他未映射位置为0,从而得到完整的 input index,用来作为多次散射切片的起始索引

  • indices_are_sortedbool(默认为false)

    输入 scatter_indices 中的索引是否已经排序

  • unique_indicesbool(默认为false)

    输入 scatter_indices 中的索引是否唯一

输入
  • inputT

    输入张量

  • scatter_indicesT

    散射切片的起始位置,可包含多个batch维度和一个index维度,多数情况下batch维度在前,index维度在最后,即[batch1, batch2, …, index_size],index_size所在位置由index_vector_dim指定

  • updatesT

    包含用于散射切片元素值的张量,维度包含batch维度和 update_window_dims 两部分,如果 update_window_dims 不是 updates 最后维度,则需要将其Transpose到最后维度

输出
  • outputT

    输出张量, 与输入张量具有相同的形状

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(half), tensor(bfloat16), tensor(float), tensor(double).

    限制输入和输出类型为数值张量

3.109. Select

根据 pred 张量的值, 从 on_trueon_false 两个输入张量的元素构建输出张量。 on_trueon_false 张量必须具有相同的形状, 输出张量的形状也与它们相同。 pred 张量必须具有与 on_trueon_false 张量相同的维度, 或者是一个具有元素类型为 bool 的标量。

来源: https://www.tensorflow.org/xla/operation_semantics#select 输入

  • predbool

    第一个输入张量

  • on_trueT

    第二个输入张量

  • on_falseT

    第三个输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double), tensor(bfloat16)

    限制输出类型为数值张量

3.110. SelectAndScatter

SelectAndScatter是一个复合操作, 首先在 input 张量上执行 ReduceWindow 操作, 以从每个窗口中选择一个元素, 然后将源张量相应元素散射到选定元素位置上, 以构建一个与 input 张量相同形状的输出张量。

来源: https://www.tensorflow.org/xla/operation_semantics#selectandscatter

属性
  • select_typestring

    select计算方式, 窗口中的所有元素以select_type的定义进行比较计算。支持的计算方式包括: GE, GT, LE, LT

  • computationenum

    scatter计算方式, 窗口中的所有元素以computation的定义进行计算。 支持的计算包括: UPDATE, ADD, SUB, MUL, DIV, MIN, MAX, AND, OR, XOR, ARGMIN, ARGMAX, L2, COUNT

  • window_dimensionslist of ints

    窗口的维度大小, 数组大小为输入张量的rank

  • window_strideslist of ints

    指定窗口移动的步长, 数组大小为输入张量的rank

  • paddinglist of ints

    对输入张量每个维度的起点和终点的填充, 可以是大于或等于 0 的任意值, 该值表示在相应维度的起点和终点部分添加的像素数。 padding的格式如下[x1_begin, x2_begin…x1_end, x2_end,…], 其中 xi_begin 表示在维度i的开始部分添加的像素数, xi_end 表示在维度i的结束部分添加的像素数

输入
  • inputT

    输入张量

  • sourceT

    散射到选定元素索引上的源张量

  • init_valueT

    用于初始化 output 张量的初始值, 以一个标量张量来表示。

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(half), tensor(bfloat16), tensor(float), tensor(double)

    限制输入类型为数值型张量

3.111. SetDimensionSize

设置给定维度的动态尺寸。输入必须是形状。

来源:https://www.tensorflow.org/xla/operation_semantics?hl=en#setdimensionsize

属性 - dimension : int

区间 [0, n) 中的一个值,用于指定维度。

输入
  • inputT

    输入张量

  • sizeint

    指定运行时形状的动态大小。

输出
  • outputT

    输出张量

类型限制
  • T : 输入和输出支持所有类型。

3.112. Shape

将张量作为输入, 并输出包含输入张量形状的1维的int64张量。

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#Shape

属性
  • startint(默认为0)

    (可选)指定对输出的形状张量的切片的起始轴, 负值表示从后往前开始计算。

  • endint(默认为1024)

    (可选)切片形状的结束轴。负值表示从后面开始计算尺寸。如果省略,则切片包括最后一个轴之前(包含)的所有轴。

输入
  • inputT

    输入张量

输出
  • outputTo

    输出张量,表示输入张量的形状

类型限制
  • T : 输入支持所有类型

  • Totensor(int64)

    限制输出类型为整型

3.113. ShiftLeft

左移位运算将输入元素的二进制表示逐元素向左位移。例如lhs=[1, 2],rhs=[1, 2],则相应的输出为[2, 8]。

输入
  • lhsT

    输入张量,用于移位

  • rhsint

    指定移位量

输出
  • outputT

    输出张量。

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64)

    限制输入和输出类型为无符号整型。

3.114. ShiftRightArithmetic

3.115. ShiftRightLogical

3.116. Sigmoid

激活函数,对输入张量逐元素按照以下公式计算得到输出张量:

y=1/(1+exp(-x))

输入
  • inputT

    输入张量,用于移位。

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型。

3.117. Sign

激活函数,对输入张量逐元素按照以下公式计算得到输出张量:

y = 1, if x > 0

y = -1, if x < 0

y = 0, if x = 0

来源:https://github.com/onnx/onnx/blob/main/docs/Operators.md#Sign

输入
  • inputT

    输入张量

输出
  • outputT

    逐元素计算的输入张量的符号。它和输入具有相同的形状类型。

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.118. Sin

对输入张量逐元素进行正弦计算得到输出张量。

输入
  • inputT

    输入张量

输出
  • outputT

    逐元素计算的输入张量的正弦值。它和输入具有相同的形状类型。

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型。

3.119. Sinh

对输入张量逐元素进行双曲正弦计算得到输出张量。

输入
  • inputT

    输入张量

输出
  • outputT

    逐元素计算的输入张量的双曲正弦值。它和输入具有相同的形状类型。

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型。

3.120. Silu

激活函数,对输入张量逐元素按照以下公式计算得到输出张量:

y=x * sigmoid(x)

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型。

3.121. Size

获取输入张量的大小。

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#Size

输入
  • inputT

    输入张量

输出
  • outputTo

    输入张量的元素总数

类型限制
  • Ttensor(uint32), tensor(uint64), tensor(int32), tensor(int64)

    限制输入类型为整型张量

  • Totensor(int64)

    限制输出类型为有符号整型张量

3.122. Slice

对输入张量进行切片,切片得到的子张量与输入张量具有相同的rank,在每一维度上通过上 界和下界组成的边界框进行切分,边界框则由属性进行定义,切片范围为 [start, end)

来源: https://www.tensorflow.org/xla/operation_semantics#slice

属性
  • start_indiceslist of ints

    N个整数的列表,包含每个维度的切片起始索引,其中 N = rank

  • limit_indiceslist of ints

    N个整数的列表,包含每个维度的切片终止索引,其中 N = rank

  • strideslist of ints

    N个整数的列表,包含切片输入步长,其中 N = rank,切片将在每个维度d上隔strides[d]取一次值。 规定 strides > 0

输入
  • inputT

    输入张量

输出
  • outputT

    输出切片的子张量

类型限制
  • T : 输入和输出支持所有类型

3.123. SliceInDim

3.124. Softmax

计算输入张量的归一化指数值。

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#softmax

属性
  • axisint(默认为-1)

    (可选)描述执行softmax计算的维度,axis为负值表示从从最后一个维度开始往前计算. axis接受的范围为[-r, r-1],其中r为输入张量的rank

  • accuratebool(默认为false)

    (可选)如果accurate为true,则该计算将沿着指定轴分别找到每个向量中的最大值,随后各个向量中的每个元素减去对应的最大值

  • logarithmicbool(默认为false)

    (可选)如果logarithmic为true,则输出结果会再进行一次log运算

  • epsilonfloat(默认为0)

    (可选)用于避免数值不稳定和除0运算,softmax计算中的分母会和epsilon取最大值当作最终的分母

输入
  • inputT

    输入张量,rank >= axis

输出
  • outputT

    输出张量,与输入张量具有相同的形状

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.125. Softplus

激活函数,使对输入张量逐元素按照以下公式计算得到输出张量:

y = 1/β * ln(exp(β * x) + 1)

来源: https://pytorch.org/docs/stable/generated/torch.nn.Softplus.html

属性
  • betaT

    (可选)β默认为。

  • thresholdT

    (可选)高于此值的值将恢复为线性函数。默认值:20。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.126. Sort

对输入张量进行排序。如果只提供一个张量,它将按降序或升序对指定维度的张量进行排序。 如果提供了一个以上的张量,它将把所有张量排序在一起(只比较第一个张量中的元素)。

来源: https://www.tensorflow.org/xla/operation_semantics#sort

属性
  • dimensionint

    要排序的维度

  • descendingbool

    是否使用降序

  • is_stablebool

    是否应使用稳定的排序

输入
  • inputslist of T

    输入张量

输出
  • outputlist of T

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.127. SpaceToDepth

SpaceToDepth将空间数据块按深度重新排列。更具体地说,该操作输出输入张量的副本,其中来自高度和宽度维度的值被移动到深度维度。

来源:https://github.com/onnx/onnx/blob/main/docs/Operators.md#SpaceToDepth

属性
  • space_dimslist of ints

    用于指定高度和宽度所在维度。

  • blocksizeint

    用于移动的block尺寸。

  • depth_dimint

    用于指定深度所在维度。

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • T : 支持所有类型。

3.128. Sqrt

对输入张量逐元素进行算术平方根计算得到输出张量。

来源:https://github.com/onnx/onnx/blob/main/docs/Operators.md#Sqrt

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.129. Squeeze

从张量的形状中删除大小为1的维度。如果未指定维度,则将从形状中删除所有大小为1的维度。 如果指定的维度值不为1,则会报错。对于动态形状,如果没有提供维度,则只考虑静态形状。

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#Squeeze

输入
  • inputT

    输入张量,至少具有max(dims)维度的张量。

  • axesTa

    指定要删除的维度。负值表示从后面开始计算尺寸,可接受的范围为 [-r,r-1],其中r=rank(input)。

输出
  • outputT

    输出张量,与输入具有相同的数据。

类型限制
  • T : 输入和输出支持所有类型

  • Tatensor(int32), tensor(int64)

    限制 axes 类型为整型

3.130. Sub

对两个输入张量逐元素进行减法计算得到输出张量

输入
  • lhsT

    输入张量,被减数

  • rhsT

    输入张量,减数

输出
  • outputT

    输出张量

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.131. Swish

激活函数,对输入张量逐元素按照以下公式计算得到输出张量:

y = x / (1 + exp(-x))

输入
  • inputT

    输入张量

输出
  • outputT

    输出张量

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.132. Tan

对输入张量逐元素进行正切计算得到输出张量, output = std::tan(input)

输入
  • inputT

    输入张量

输出
  • outputT

    输出 input 的正切值

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.133. Tanh

对输入张量逐元素进行双曲正切计算得到输出张量, output = std::tanh(input)

输入
  • inputT

    输入张量

输出
  • outputT

    输出 input 的双曲正切值

类型限制
  • Ttensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为浮点型

3.134. Tile

3.135. Topk

读取沿指定维度最大或最小的前 K 个元素。

来源: https://github.com/onnx/onnx/blob/rel-1.14.1/docs/Operators.md#TopK

属性
  • axisint

    指定进行排序的维度。

  • sortedbool(默认为true)

    是否按顺序返回元素。

  • largestbool(默认为true)

    是返回前 K 个最大元素(默认)还是最小元素。

输入
  • inputT

    输入张量

  • ktensor(int)

    一维张量,包含单个正值指定要检索的元素个数。

输出
  • outputT

    形状为 [a_1, a_2, …, a_{axis-1}, k, a_{axis+1}, … a_n] 的张量,包含输入张量的前 K 个值

  • indicestensor(int)

    形状为 [a_1, a_2, …, a_{axis-1}, k, a_{axis+1}, … a_n] 的张量,包含前 K 个值的对应输入张量索引。

类型限制
  • Ttensor(uint8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(int8), tensor(int16), tensor(int32), tensor(int64), tensor(float16), tensor(float), tensor(double)

    限制输入和输出类型为数值类型

3.136. Transpose

对输入张量进行Transpose,类似于numpy.Transpose。例如,当permutation=(1,0,2)时,给定形状为(1,2,3)的输入张量,输出形状将为(2,1,3)。

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#Transpose

属性
  • permutationlist of ints

    整数列表,根据给定的值排列轴。

输入
  • inputT

    输入张量

输出
  • outputT

    输出重新排列后的张量

类型限制
  • T : 输入和输出支持所有类型

3.137. Trilu

给定一个二维矩阵或一批二维矩阵,返回张量的上三角部分或下三角部分。 Trilu取一个形状为 [*,N,M] 的输入张量,其中 * 为零或多个批维度。上三角形部分由给定对角线(k)上的元素组成。下三角部分由对角线上和对角线下的元素组成。矩阵中的所有其他元素都设置为零。

来源: https://github.com/onnx/onnx/blob/main/docs/Operators.md#Trilu

属性
  • upperbool

    指示是保留矩阵的上三角部分还是下三角部分。

  • kint

    该值对应于与主对角线上方或下方第几个对角线。

输入
  • inputT

    rank>=2的输入张量

输出
  • outputT

    与输入张量具有相同类型和形状的输出张量。

类型限制
  • T : 输入和输出支持所有类型

3.138. Tuple

3.139. Unsqueeze

将维度大小1的项插入到输入张量的形状中。输入轴张量中包含维度索引列表,用于在输出张量的相应索引中插入值为1的维度。

输入
  • inputT

    输入张量,至少具有max(dims)维度的张量。

  • axesTa

    输入轴张量,包含维度索引列表。

输出
  • outputT

    输出张量。

类型限制
  • T : 输入和输出支持所有类型

  • Tatensor(int32), tensor(int64)

    限制输入axes类型为整型张量

3.140. While

3.141. Xor

逐元素做逻辑异或运算, output = lhs ^ rhs

属性
  • broadcast_dimensionslist of ints

    (可选)指定需要被广播的维度

输入
  • lhsT

    逻辑运算的第一个输入

  • rhsT

    逻辑运算的第二个输入

输出
  • outputT

    输出 lhs ^ rhs 的值

类型限制
  • Ttensor(bool)

    限制输入和输出类型为布尔