onnx-mlir

Logo

ONNX 模型在 MLIR 编译器基础设施中的表示和参考下推

在 GitHub 上查看项目 onnx/onnx-mlir

操作指南

使用 Python 进行推理
使用 C/C++ 进行推理
使用 Java 进行推理

参考资料

ONNX 方言
OMTensor C99 运行时 API
OMTensorList C99 运行时 API
OMTensor Java 运行时 API
OMTensorList Java 运行时 API
生成 ONNX 方言
关于文档

开发

添加操作
测试指南
错误处理
命令行选项
插桩
常量传播
添加加速器

工具

工具

RunONNXModel.py
DocCheck

此项目由 onnx 维护

托管于 GitHub Pages — 主题来自 orderedlist

onnx.Abs (ONNXAbsOp)

ONNX Abs 操作

绝对值运算接收一个输入数据(Tensor)) 并生成一个输出数据 (张量,并逐元素地对张量应用绝对值,y = abs(x)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Acos (ONNXAcosOp)

ONNX Acos 操作

逐元素计算给定输入张量的反余弦(余弦的逆运算)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Acosh (ONNXAcoshOp)

ONNX Acosh 操作

逐元素计算给定输入张量的双曲反余弦。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Adagrad (ONNXAdagradOp)

ONNX Adagrad 操作

计算 ADAGRAD 的一次迭代,这是一种基于随机梯度的优化算法。此运算符可以进行多个张量变量的优化。

Let's define the behavior of this operator. As you can imagine, ADAGRAD requires
some parameters:

 - The initial learning-rate \"R\".
 - The update count \"T\". That is, the number of training iterations conducted.
 - A L2-norm regularization coefficient \"norm_coefficient\".
 - A learning-rate decay factor \"decay_factor\".
 - A small constant \"epsilon\" to avoid dividing-by-zero.

At each ADAGRAD iteration, the optimized tensors are moved along a direction
computed based on their estimated gradient and accumulated squared gradient. Assume
that only a single tensor \"X\" is updated by this operator. We need the value of \"X\",
its gradient \"G\", and its accumulated squared gradient \"H\". Therefore, variables in
this operator's input list are sequentially \"R\", \"T\", \"X\", \"G\", and \"H\". Other
parameters are given as attributes because they are usually constants. Also, the
corresponding output tensors are the new value of \"X\" (called \"X_new\"), and then
the new accumulated squared gradient (called \"H_new\"). Those outputs are computed
from the given inputs following the pseudo code below.

Let \"+\", \"-\", \"*\", and \"/\" are all element-wise arithmetic operations with
numpy-style broadcasting support. The pseudo code to compute those outputs is:

  // Compute a scalar learning-rate factor. At the first update of X, T is generally
  // 0 (0-based update index) or 1 (1-based update index).
  r = R / (1 + T * decay_factor);

  // Add gradient of 0.5 * norm_coefficient * ||X||_2^2, where ||X||_2 is the 2-norm.
  G_regularized = norm_coefficient * X + G;

  // Compute new accumulated squared gradient.
  H_new = H + G_regularized * G_regularized;

  // Compute the adaptive part of per-coordinate learning rate. Note that Sqrt(...)
  // computes element-wise square-root.
  H_adaptive = Sqrt(H_new) + epsilon

  // Compute the new value of \"X\".
  X_new = X - r * G_regularized / H_adaptive;

If one assign this operators to optimize multiple inputs, for example, \"X_1\" and \"X_2\", the same
pseudo code may be extended to handle all tensors jointly. More specifically, we can view \"X\" as a
concatenation of \"X_1\" and \"X_2\" (of course, their gradient and accumulate gradient should
be concatenated too) and then just reuse the entire pseudo code.

Note that ADAGRAD was first proposed in http://jmlr.org/papers/volume12/duchi11a/duchi11a.pdf.
In that reference paper, this operator is a special case of the Figure 1's composite mirror
descent update.

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
decay_factor::mlir::FloatAttr32位浮点属性
epsilon::mlir::FloatAttr32位浮点属性
norm_coefficient::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
R 32位浮点值张量或64位浮点值张量
T 64位无符号整数值张量
inputs 32位浮点值张量或64位浮点值张量的可变参数

结果

结果 描述
outputs 32位浮点值张量或64位浮点值张量的可变参数

onnx.Adam (ONNXAdamOp)

ONNX Adam 操作

计算 Adam 的一次迭代,这是一种基于随机梯度的优化算法。此运算符可以进行多个张量变量的优化。

Let's define the behavior of this operator. First of all, Adam requires
some parameters:

 - The learning-rate \"R\".
 - The update count \"T\". That is, the number of training iterations conducted.
 - A L2-norm regularization coefficient \"norm_coefficient\".
 - A small constant \"epsilon\" to avoid dividing-by-zero.
 - Two coefficients, \"alpha\" and \"beta\".

At each Adam iteration, the optimized tensors are moved along a direction
computed based on their exponentially-averaged historical gradient and
exponentially-averaged historical squared gradient. Assume that only a tensor
\"X\" is being optimized. The rest of required information is

 - the value of \"X\",
 - \"X\"'s gradient (denoted by \"G\"),
 - \"X\"'s exponentially-averaged historical gradient (denoted by \"V\"), and
 - \"X\"'s exponentially-averaged historical squared gradient (denoted by \"H\").

Some of those parameters are passed into this operator as input tensors and others
are stored as this operator's attributes. Specifically, this operator's input tensor
list is [\"R\", \"T\", \"X\", \"G\", \"V\", \"H\"]. That is, \"R\" is the first input, \"T\" is
the second input, and so on. Other parameters are given as attributes because they
are constants. Moreover, the corresponding output tensors are

 - the new value of \"X\" (called \"X_new\"),
 - the new exponentially-averaged historical gradient (denoted by \"V_new\"), and
 - the new exponentially-averaged historical squared gradient (denoted by \"H_new\").

Those outputs are computed following the pseudo code below.

Let \"+\", \"-\", \"*\", and \"/\" are all element-wise arithmetic operations with
numpy-style broadcasting support. The pseudo code to compute those outputs is:

  // Add gradient of 0.5 * norm_coefficient * ||X||_2^2, where ||X||_2 is the 2-norm.
  G_regularized = norm_coefficient * X + G

  // Update exponentially-averaged historical gradient.
  V_new = alpha * V + (1 - alpha) * G_regularized

  // Update exponentially-averaged historical squared gradient.
  H_new = beta * H + (1 - beta) * G_regularized * G_regularized

  // Compute the element-wise square-root of H_new. V_new will be element-wisely
  // divided by H_sqrt for a better update direction.
  H_sqrt = Sqrt(H_new) + epsilon

  // Compute learning-rate. Note that \"alpha**T\"/\"beta**T\" is alpha's/beta's T-th power.
  R_adjusted = T > 0 ? R * Sqrt(1 - beta**T) / (1 - alpha**T) : R

  // Compute new value of \"X\".
  X_new = X - R_adjusted * V_new / H_sqrt

  // Post-update regularization.
  X_final = (1 - norm_coefficient_post) * X_new

If there are multiple inputs to be optimized, the pseudo code will be applied
independently to each of them.

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
alpha::mlir::FloatAttr32位浮点属性
beta::mlir::FloatAttr32位浮点属性
epsilon::mlir::FloatAttr32位浮点属性
norm_coefficient::mlir::FloatAttr32位浮点属性
norm_coefficient_post::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
R 32位浮点值张量或64位浮点值张量
T 64位无符号整数值张量
inputs 32位浮点值张量或64位浮点值张量的可变参数

结果

结果 描述
outputs 32位浮点值张量或64位浮点值张量的可变参数

onnx.Add (ONNXAddOp)

ONNX Add 操作

执行逐元素的二进制加法(支持 Numpy 风格的广播)。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

(Opset 14 更改):扩展支持的类型以包括 uint8、int8、uint16 和 int16。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
B 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
C 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.And (ONNXAndOp)

ONNX And 操作

执行输入张量 AB 之间的逻辑“与”运算,逐元素地得到结果张量(支持 Numpy 风格的广播)。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 1位无符号整数值张量
B 1位无符号整数值张量

结果

结果 描述
C 1位无符号整数值张量

onnx.ArgMax (ONNXArgMaxOp)

ONNX ArgMax 操作

计算输入张量沿指定轴的最大元素的索引。如果 keepdims 等于 1,则结果张量的秩与输入相同。如果 keepdims 等于 0,则结果张量会移除减小的维度。如果 select_last_index 为 True(默认为 False),则选择最大值出现多次时最后一个最大值的索引。否则,选择第一个最大值的索引。输出张量的类型为整数。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
keepdims::mlir::IntegerAttr64位有符号整数属性
select_last_index::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
reduced 64位无符号整数值张量

onnx.ArgMin (ONNXArgMinOp)

ONNX ArgMin 操作

计算输入张量沿指定轴的最小元素的索引。如果 keepdims 等于 1,则结果张量的秩与输入相同。如果 keepdims 等于 0,则结果张量会移除减小的维度。如果 select_last_index 为 True(默认为 False),则选择最小值出现多次时最后一个最小值的索引。否则,选择第一个最小值的索引。输出张量的类型为整数。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
keepdims::mlir::IntegerAttr64位有符号整数属性
select_last_index::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
reduced 64位无符号整数值张量

onnx.ArrayFeatureExtractor (ONNXArrayFeatureExtractorOp)

ONNX ArrayFeatureExtractor 操作

根据提供的索引选择输入张量的元素。
索引应用于张量的最后一个轴。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量或字符串类型值张量
Y 64位无符号整数值张量

结果

结果 描述
Z 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量或字符串类型值张量

onnx.Asin (ONNXAsinOp)

ONNX Asin 操作

逐元素计算给定输入张量的反正弦(正弦的逆运算)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Asinh (ONNXAsinhOp)

ONNX Asinh 操作

逐元素计算给定输入张量的双曲反正弦。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Atan (ONNXAtanOp)

ONNX Atan 操作

逐元素计算给定输入张量的反正切(正切的逆运算)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Atanh (ONNXAtanhOp)

ONNX Atanh 操作

逐元素计算给定输入张量的双曲反正切。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.AveragePool (ONNXAveragePoolOp)

ONNX AveragePool 操作

AveragePool 接收一个输入张量 X,并根据核形状、步幅和填充长度对张量应用平均池化。平均池化包括根据核形状计算输入张量子集的平均值,并将数据下采样到输出张量 Y 以进行进一步处理。输出的空间形状的计算方式因是否使用显式填充(pads)或自动填充(auto_pad)而异。使用显式填充时(https://pytorch.ac.cn/docs/stable/generated/torch.nn.MaxPool2d.html?highlight=maxpool#torch.nn.MaxPool2d)

 output_spatial_shape[i] = floor((input_spatial_shape[i] + pad_shape[i] - dilation[i] * (kernel_shape[i] - 1) - 1) / strides_spatial_shape[i] + 1)

 output_spatial_shape[i] = ceil((input_spatial_shape[i] + pad_shape[i] - dilation[i] * (kernel_shape[i] - 1) - 1) / strides_spatial_shape[i] + 1)

ceil_mode 启用时,pad_shape[i] 是沿轴 i 的填充之和。在右填充区域开始的滑动窗口将被忽略。

auto_pad 是一个已弃用的属性。如果您当前正在使用它,当 ceil_mode 启用时,输出的空间形状将遵循

 VALID: output_spatial_shape[i] = ceil((input_spatial_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1) + 1) / strides_spatial_shape[i])
 SAME_UPPER or SAME_LOWER: output_spatial_shape[i] = ceil(input_spatial_shape[i] / strides_spatial_shape[i])

或当 ceil_mode 禁用时(https://tensorflowcn.cn/api_docs/python/tf/keras/layers/AveragePooling2D)

 VALID: output_spatial_shape[i] = floor((input_spatial_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1)) / strides_spatial_shape[i]) + 1
 SAME_UPPER or SAME_LOWER: output_spatial_shape[i] = floor((input_spatial_shape[i] - 1) / strides_spatial_shape[i]) + 1

如果 SAME_UPPERSAME_LOWER,则填充形状将遵循

 pad_shape[i] = (output_spatial_shape[i] - 1) * strides_spatial_shape[i] + ((kernel_spatial_shape[i] - 1) * dilations[i] + 1) - input_spatial_shape[i]

每个池化窗口的输出除以元素数量(当属性 count_include_pad 为零时,排除填充)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
auto_pad::mlir::StringAttr字符串属性
ceil_mode::mlir::IntegerAttr64位有符号整数属性
count_include_pad::mlir::IntegerAttr64位有符号整数属性
dilations::mlir::ArrayAttr64位整数数组属性
kernel_shape::mlir::ArrayAttr64位整数数组属性
pads::mlir::ArrayAttr64位整数数组属性
strides::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.BatchNormalizationInferenceMode (ONNXBatchNormalizationInferenceModeOp)

ONNX BatchNormalization 推理模式操作

按照论文 https://arxiv.org/abs/1502.03167 中的描述执行批归一化。根据运行模式的不同,输出的数量有多种情况,我们将在下面列出。

输出情况 #1:Y,mean,var,saved_mean,saved_var(训练模式) 输出情况 #2:Y(测试模式)”

对于之前的(已弃用)非空间情况,建议实现者在 BatchNormalization Op 之前将输入形状展平成 (N x C*D1*D2 ..*Dn)。此操作具有**可选**输入/输出。有关可选参数表示形式的更多详细信息,请参阅文档。可以使用空字符串代替实际参数的名称来表示缺失的参数。后面的可选参数(那些后面没有跟随现有参数的参数)也可以简单地省略。

此操作不是标准的一部分,已添加以协助 onnx-mlir。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
epsilon::mlir::FloatAttr32位浮点属性
momentum::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
X 任何类型值的 memref 或任何类型值的张量
scale 任何类型值的 memref 或任何类型值的张量
B 任何类型值的 memref 或任何类型值的张量
mean 任何类型值的 memref 或任何类型值的张量
var 任何类型值的 memref 或任何类型值的张量

结果

结果 描述
o_Y 任何类型值的 memref 或任何类型值的张量

onnx.BatchNormalization (ONNXBatchNormalizationOp)

ONNX BatchNormalization 操作

按照论文 https://arxiv.org/abs/1502.03167 中的描述执行批归一化。根据运行模式的不同,有五个必需输入“X”、“scale”、“B”、“input_mean”和“input_var”。请注意,“input_mean”和“input_var”在推理模式(training_mode=False,默认)下应为估计的统计量,在训练模式(training_mode=True)下应为运行统计量。输出数量有多种情况,我们将在下面列出。

当 training_mode=False 时,额外的输出无效。当 training_mode=True 时,输出更新如下。

running_mean = input_mean * momentum + current_mean * (1 - momentum)
running_var = input_var * momentum + current_var * (1 - momentum)

Y = (X - current_mean) / sqrt(current_var + epsilon) * scale + B

其中

current_mean = ReduceMean(X, axis=all_except_channel_index)
current_var =  ReduceVar(X, axis=all_except_channel_index)

请注意,ReduceVar 指的是总体方差,它等于 sum(sqrd(x_i - x_avg)) / N,其中 N 是总体大小(此公式不使用样本大小 N - 1)。

ReduceMean 和 ReduceVar 的计算使用浮点数以避免 float16 输入溢出。

当 training_mode=False 时

Y = (X - input_mean) / sqrt(input_var + epsilon) * scale + B

对于之前的(已弃用)非空间情况,建议实现者在 BatchNormalization Op 之前将输入形状展平成 (N x C * D1 * D2 * … * Dn)。此操作具有**可选**输入/输出。有关可选参数表示形式的更多详细信息,请参阅文档。可以使用空字符串代替实际参数的名称来表示缺失的参数。后面的可选参数(那些后面没有跟随现有参数的参数)也可以简单地省略。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
epsilon::mlir::FloatAttr32位浮点属性
momentum::mlir::FloatAttr32位浮点属性
training_mode::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
scale 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
B 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
input_mean 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
input_var 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
Y 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
running_mean 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量或None类型
running_var 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量或None类型

onnx.Bernoulli (ONNXBernoulliOp)

ONNX Bernoulli 操作

从伯努利分布中抽取二元随机数(0 或 1)。输入张量应包含概率 p([0,1] 范围内的值)的张量,用于抽取二元随机数,其中输出 1 的概率为 p,输出 0 的概率为 (1-p)。

此操作是非确定性的,并且在不同的实现中可能不会产生相同的值(即使指定了种子)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
dtype::mlir::IntegerAttr64位有符号整数属性
seed::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或1位无符号整数值张量

onnx.Binarizer (ONNXBinarizerOp)

ONNX Binarizer 操作

根据与阈值比较的结果,逐元素地将输入张量的值映射到 0 或 1。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
threshold::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
X 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量

结果

结果 描述
Y 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量

onnx.BitShift (ONNXBitShiftOp)

ONNX BitShift 操作

按位移位运算符执行逐元素操作。对于每个输入元素,如果属性“direction”为“RIGHT”,此运算符会将其二进制表示向右移动,从而有效地减小输入值。如果属性“direction”为“LEFT”,位的二进制表示会向左移动,从而增加其实际值。输入 X 是要移位的张量,另一个输入 Y 指定移位量。例如,如果“direction”为“Right”,X 为 [1, 4],S 为 [1, 1],则对应的输出 Z 为 [0, 2]。如果“direction”为“LEFT”,X 为 [1, 2],S 为 [1, 2],则对应的输出 Y 为 [2, 8]。

由于此运算符支持 Numpy 风格的广播,因此 X 和 Y 的形状不必相同。此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
direction::mlir::StringAttr字符串属性

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量

结果

结果 描述
Z 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量

onnx.BitwiseAnd (ONNXBitwiseAndOp)

ONNX BitwiseAnd 操作

执行输入张量 AB 之间的按位“与”运算,逐元素地得到结果张量(支持 Numpy 风格的广播)。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量
B 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量

结果

结果 描述
C 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量

onnx.BitwiseNot (ONNXBitwiseNotOp)

ONNX BitwiseNot 操作

逐元素地返回输入张量的按位非。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量

结果

结果 描述
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量

onnx.BitwiseOr (ONNXBitwiseOrOp)

ONNX BitwiseOr 操作

执行输入张量 AB 之间的按位“或”运算,逐元素地得到结果张量(支持 Numpy 风格的广播)。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量
B 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量

结果

结果 描述
C 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量

onnx.BitwiseXor (ONNXBitwiseXorOp)

ONNX BitwiseXor 操作

执行输入张量 AB 之间的按位“异或”运算,逐元素地得到结果张量(支持 Numpy 风格的广播)。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量
B 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量

结果

结果 描述
C 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量

onnx.BlackmanWindow (ONNXBlackmanWindowOp)

ONNX BlackmanWindow 操作

生成一个 Blackman 窗,如论文 https://ieeexplore.ieee.org/document/1455106 中所述。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
output_datatype::mlir::IntegerAttr64位有符号整数属性
periodic::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
size 32位无符号整数值张量或64位无符号整数值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.CastLike (ONNXCastLikeOp)

ONNX CastLike 操作

此运算符将给定输入张量(第一个输入)的元素转换为与第二个输入张量的元素相同的数据类型。有关详细信息,请参阅 Cast 运算符的文档。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
saturate::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 16位浮点值张量或32位浮点值张量或64位浮点值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或1位无符号整数值张量或字符串类型值张量或bfloat16类型值张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量
target_type 16位浮点值张量或32位浮点值张量或64位浮点值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或1位无符号整数值张量或字符串类型值张量或bfloat16类型值张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量或64位浮点值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或1位无符号整数值张量或字符串类型值张量或bfloat16类型值张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量

onnx.CastMap (ONNXCastMapOp)

ONNX CastMap 操作

将映射转换为张量。
地图键必须是 int64,并且值将根据此键按升序排列。
该运算符支持密集打包或稀疏打包。如果使用稀疏打包,则键不能超过 max_map-1 的值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
cast_to::mlir::StringAttr字符串属性
map_form::mlir::StringAttr字符串属性
max_map::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X 任意 64 位无符号整数或字符串类型值的元组,或任意 64 位无符号整数和 32 位浮点值的元组

结果

结果 描述
Y 字符串类型值张量或32位浮点值张量或64位无符号整数值张量

onnx.Cast (ONNXCastOp)

ONNX Cast 操作

此运算符将给定输入张量的元素转换为“to”参数指定的数据类型,并返回一个大小相同、类型已转换的输出张量。“to”参数必须是 TensorProto 消息中的 DataType 枚举字段中指定的数据类型之一。

支持将普通(例如,“3.14”和“1000”)和科学计数法(例如,“1e-5”和“1E8”)的字符串张量转换为浮点类型。例如,将字符串“100.5”转换为整数可能会得到结果 100。有几个字符串字面量保留用于特殊的浮点值;“+INF”(和“INF”)、“-INF”和“NaN”分别表示正无穷大、负无穷大和非数字。任何不区分大小写地精确匹配“+INF”的字符串都将映射到正无穷大。类似地,此不区分大小写的规则适用于“INF”和“NaN”。将非数字字符串(例如“Hello World!”)转换为数字是未定义行为。将表示浮点算术值(例如“2.718”)的字符串转换为 INT 是未定义行为。

从数值类型到任何数值类型的转换始终是允许的。用户必须注意精度损失和由于类型之间范围差异引起的值更改。例如,64 位浮点数 3.1415926459 可能会四舍五入到 32 位浮点数 3.141592。类似地,将整数 36 转换为布尔值可能会产生 1,因为我们截断了无法存储在目标类型中的位。

更详细地说,当目标类型不是浮点 8 类型时,数值类型之间的转换应遵循以下规则。

浮点 8 类型是为了加速深度模型的训练而引入的。默认情况下,浮点数 *x* 的转换遵循以下规则。[x] 表示四舍五入到目标尾数位宽的值。

x E4M3FN E4M3FNUZ E5M2 E5M2FNUZ
0 0 0 0 0
-0 -0 0 -0 0
NaN NaN NaN NaN NaN
+/- Inf +/- FLT_MAX NaN FLT_MAX NaN
[x] > FLT_MAX FLT_MAX FLT_MAX FLT_MAX FLT_MAX
[x] < -FLT_MAX -FLT_MAX -FLT_MAX -FLT_MAX -FLT_MAX
else RNE RNE RNE RNE

如果参数 'saturate' 设置为 False,行为将发生变化。规则将变为

x E4M3FN E4M3FNUZ E5M2 E5M2FNUZ
0 0 0 0 0
-0 -0 0 -0 0
NaN NaN NaN NaN NaN
+/- Inf NaN NaN +/- Inf NaN
[x] > FLT_MAX NaN NaN Inf NaN
[x] < -FLT_MAX NaN NaN -Inf NaN
else RNE RNE RNE RNE

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ResultTypeInferenceOpInterface, ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
saturate::mlir::IntegerAttr64位有符号整数属性
to::mlir::TypeAttr任何类型属性

操作数

操作数 描述
输入 16位浮点值张量或32位浮点值张量或64位浮点值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或1位无符号整数值张量或字符串类型值张量或bfloat16类型值张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量或64位浮点值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或1位无符号整数值张量或字符串类型值张量或bfloat16类型值张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量

onnx.CategoryMapper (ONNXCategoryMapperOp)

ONNX CategoryMapper 操作

将字符串转换为整数,反之亦然。
使用两个等长序列在整数和字符串之间进行映射,其中相同索引处的字符串和整数详细说明了映射关系。
每个算子要么将整数转换为字符串,要么将字符串转换为整数,具体取决于提供了哪个默认值属性。应只定义一个默认值属性。
如果设置了字符串默认值,它将把整数转换为字符串。如果设置了整数默认值,它将把字符串转换为整数。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
cats_int64s::mlir::ArrayAttr64位整数数组属性
cats_strings::mlir::ArrayAttr字符串数组属性
default_int64::mlir::IntegerAttr64位有符号整数属性
default_string::mlir::StringAttr字符串属性

操作数

操作数 描述
X 字符串类型值张量或64位无符号整数值张量

结果

结果 描述
Y 字符串类型值张量或64位无符号整数值张量

onnx.Ceil (ONNXCeilOp)

ONNX Ceil 操作

Ceil 接收一个输入数据(Tensor)) 并生成一个输出数据 (张量,并逐元素地对张量应用 ceil,y = ceil(x)。如果 x 是整数、+0、-0、NaN 或无穷大,则返回 x 本身。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
Y 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Celu (ONNXCeluOp)

ONNX Celu 操作

连续可微分指数线性单元:使用公式逐元素地对输入张量 X 应用线性单元

max(0,x) + min(0,alpha*(exp(x/alpha)-1))

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
alpha::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
X 32位浮点值张量

结果

结果 描述
Y 32位浮点值张量

onnx.CenterCropPad (ONNXCenterCropPadOp)

ONNX CenterCropPad 操作

将输入裁剪或填充到给定尺寸。

裁剪/填充尺寸可以为 axes 的子集指定。未指定的尺寸将不会被裁剪或填充。

如果输入尺寸大于裁剪形状,则从输入中提取一个居中的裁剪窗口。如果输入尺寸小于裁剪形状,则输入会在两侧均匀填充,以便输入在输出中居中。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
input_data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
shape 32位无符号整数值张量或64位无符号整数值张量

结果

结果 描述
output_data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Clip (ONNXClipOp)

ONNX Clip 操作

Clip 运算符将给定输入限制在给定区间内。区间由输入 'min' 和 'max' 指定。它们默认为 numeric_limits::lowest() 和 numeric_limits::max()。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
min 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量或None类型
max 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量或None类型

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ClipV11 (ONNXClipV11Op)

ONNX Clip 操作

Clip 运算符将给定输入限制在给定区间内。区间由输入 'min' 和 'max' 指定。它们默认为 numeric_limits::lowest() 和 numeric_limits::max()。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 16位浮点值张量或32位浮点值张量或64位浮点值张量
min 16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
max 16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.ClipV12 (ONNXClipV12Op)

ONNX Clip 操作

Clip 运算符将给定输入限制在给定区间内。区间由输入 'min' 和 'max' 指定。它们默认为 numeric_limits::lowest() 和 numeric_limits::max()。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
min 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
max 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.ClipV6 (ONNXClipV6Op)

ONNX Clip 操作

Clip 运算符将给定输入限制在给定区间内。区间由属性‘min’和‘max’指定。它们分别默认为 numeric_limits::lowest() 和 numeric_limits::max()。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
max::mlir::FloatAttr32位浮点属性
min::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
输入 16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Col2Im (ONNXCol2ImOp)

ONNX Col2Im 操作

此运算符将列块重新排列回多维图像。

Col2Im 的行为类似于 PyTorch 的 fold https://pytorch.ac.cn/docs/stable/generated/torch.nn.Fold.html,但它仅支持*批处理*的多维图像张量。Python 中支持 N 维的另一种实现可以在 https://github.com/f-dangel/unfoldNd/. 找到。

注意:虽然指定 image_shape 看起来是多余的,因为它可以通过卷积公式计算,但为了更高级的场景,它仍然是必需的输入,如 PyTorch 的实现中所述(https://github.com/pytorch/pytorch/blob/master/aten/src/ATen/native/Col2Im.cpp#L10)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
dilations::mlir::ArrayAttr64位整数数组属性
pads::mlir::ArrayAttr64位整数数组属性
strides::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
image_shape 64位无符号整数值张量
block_shape 64位无符号整数值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Compress (ONNXCompressOp)

ONNX Compress 操作

沿给定轴选择输入张量的切片,其中条件对每个轴索引求值为 True。如果未提供轴,则在选择元素之前对输入进行展平。Compress 的行为类似于 numpy.compress:https://docs.scipy.org.cn/doc/numpy/reference/generated/numpy.compress.html

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
condition 1位无符号整数值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.ConcatFromSequence (ONNXConcatFromSequenceOp)

ONNX ConcatFromSequence 操作

将一系列张量连接成一个单一的张量。所有输入张量必须具有相同的形状,除了要连接的轴的维度大小。默认情况下,“new_axis”为 0,行为类似于 numpy.concatenate。当“new_axis”为 1 时,行为类似于 numpy.stack。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
new_axis::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
input_sequence 8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或16位浮点值张量序列类型或32位浮点值张量序列类型或64位浮点值张量序列类型或字符串类型值张量序列类型或1位无符号整数值张量序列类型或具有32位浮点元素的复数类型张量序列类型或具有64位浮点元素的复数类型张量序列类型

结果

结果 描述
concat_result 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Concat (ONNXConcatOp)

ONNX Concat 操作

将张量列表连接成一个单一的张量。所有输入张量必须具有相同的形状,除了要连接的轴的维度大小。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
inputs 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
concat_result 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.ConcatShapeTranspose (ONNXConcatShapeTransposeOp)

ONNX 合并操作

将以下一系列 op 合并为一个 op:v1 = onnx.concat v2 = onnx.shape(v1) v3 = onnx.transpose(v1)

此操作不是标准的一部分,已添加以协助 onnx-mlir。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
end::mlir::IntegerAttr64位有符号整数属性
start::mlir::IntegerAttr64位有符号整数属性
perm::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
inputs 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
shape 64位无符号整数值张量
transposed 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.ConstantOfShape (ONNXConstantOfShapeOp)

ONNX ConstantOfShape 操作

生成具有给定值和形状的张量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ResultTypeInferenceOpInterface, ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
value::mlir::Attribute任何属性

操作数

操作数 描述
输入 64位无符号整数值张量

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量或64位浮点值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或1位无符号整数值张量或bfloat16类型值张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量

onnx.Constant (ONNXConstantOp)

ONNX Constant 操作

此运算符产生一个常量张量。必须指定提供的属性之一,即 value、sparse_value 或 value_*。

特性: AlwaysSpeculatableImplTrait, ConstantLike

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ResultTypeInferenceOpInterface, ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
sparse_value::mlir::Attribute任何属性
value::mlir::Attribute任何属性
value_float::mlir::FloatAttr32位浮点属性
value_floats::mlir::ArrayAttr32位浮点数数组属性
value_int::mlir::IntegerAttr64位有符号整数属性
value_ints::mlir::ArrayAttr64位整数数组属性
value_string::mlir::StringAttr字符串属性
value_strings::mlir::ArrayAttr字符串数组属性

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量

onnx.ConvInteger (ONNXConvIntegerOp)

ONNX ConvInteger 操作

整数卷积运算符接收一个输入张量、其零点、一个滤波器及其零点,并计算输出。生产过程*必须*永远不会溢出。累积可以溢出,仅当在 32 位时。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
auto_pad::mlir::StringAttr字符串属性
dilations::mlir::ArrayAttr64位整数数组属性
group::mlir::IntegerAttr64位有符号整数属性
kernel_shape::mlir::ArrayAttr64位整数数组属性
pads::mlir::ArrayAttr64位整数数组属性
strides::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
x 8位无符号整数值张量或8位无符号整数值张量
w 8位无符号整数值张量或8位无符号整数值张量
x_zero_point 8位无符号整数值张量或8位无符号整数值张量或None类型
w_zero_point 8位无符号整数值张量或8位无符号整数值张量或None类型

结果

结果 描述
y 32位无符号整数值张量

onnx.Conv (ONNXConvOp)

ONNX Conv 操作

卷积运算符接收一个输入张量和一个滤波器,并计算输出。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
auto_pad::mlir::StringAttr字符串属性
dilations::mlir::ArrayAttr64位整数数组属性
group::mlir::IntegerAttr64位有符号整数属性
kernel_shape::mlir::ArrayAttr64位整数数组属性
pads::mlir::ArrayAttr64位整数数组属性
strides::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
W bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
B bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.ConvTranspose (ONNXConvTransposeOp)

ONNX ConvTranspose 操作

卷积转置运算符接收一个输入张量和一个滤波器,并计算输出。

如果提供了 pads 参数,则输出形状通过以下方程计算:

output_shape[i] = stride[i] * (input_size[i] - 1) + output_padding[i] + ((kernel_shape[i] - 1) * dilations[i] + 1) - pads[start_i] - pads[end_i]

也可以显式指定 output_shape,在这种情况下,填充值将使用以下方程自动生成:

total_padding[i] = stride[i] * (input_size[i] - 1) + output_padding[i] + ((kernel_shape[i] - 1) * dilations[i] + 1) - output_shape[i] 如果 (auto_pads == SAME_UPPER):pads[start_i] = total_padding[i]/2;pads[end_i] = total_padding[i] - (total_padding[i]/2) 否则:pads[start_i] = total_padding[i] - (total_padding[i]/2);pads[end_i] = (total_padding[i]/2)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
auto_pad::mlir::StringAttr字符串属性
dilations::mlir::ArrayAttr64位整数数组属性
group::mlir::IntegerAttr64位有符号整数属性
kernel_shape::mlir::ArrayAttr64位整数数组属性
output_padding::mlir::ArrayAttr64位整数数组属性
output_shape::mlir::ArrayAttr64位整数数组属性
pads::mlir::ArrayAttr64位整数数组属性
strides::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
W bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
B bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Cos (ONNXCosOp)

ONNX Cos 操作

逐元素计算给定输入张量的余弦。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Cosh (ONNXCoshOp)

ONNX Cosh 操作

逐元素计算给定输入张量的双曲余弦。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.CumSum (ONNXCumSumOp)

ONNX CumSum 操作

沿给定轴执行输入元素的累积和。默认情况下,它将进行包含性求和,这意味着第一个元素按原样复制。通过 exclusive 属性,此行为可以更改为排除第一个元素。它还可以沿轴的反方向进行求和。为此,将 reverse 属性设置为 1。

示例

input_x = [1, 2, 3]
axis=0
output = [1, 3, 6]
exclusive=1
output = [0, 1, 3]
exclusive=0
reverse=1
output = [6, 5, 3]
exclusive=1
reverse=1
output = [5, 3, 0]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
exclusive::mlir::IntegerAttr64位有符号整数属性
reverse::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
x 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
32位无符号整数值张量或64位无符号整数值张量

结果

结果 描述
y 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Custom (ONNXCustomOp)

ONNX Custom 操作

CustomOp 不是 onnx 标准中定义的 Op,而是为了支持可以被转换或最终调用用户定义的外部函数的 Op 的扩展而添加的。“

它允许调用用户定义的运算符,其中一个必需的属性是命名该运算符的字符串。其他输入将传递给用户运算符。

输入和输出的数量可能不同。

对于输入和输出,都可以接受 NoneType,因为 CustomOp 可能需要固定数量的输入/输出来进行外部函数调用。

除了传递给用户定义运算符的值之外,还引入了某些属性以促进 CustomOp 的分析和转换。

由于编译器不定义 CustomOp 的语义,onnx-mlir 无法推断其输出的形状。因此,引入了特定的属性来指定 CustomOp 的形状推理应如何进行。这些属性是:‘inputs_for_infer’:可选。用于形状推理的输入的索引。索引值应为 [0, 输入数量)。如果未指定,则 CustomOp 的所有输入都将用于形状推理。‘shape_infer_pattern’:可选。指定如何将形状信息从输入(可能受 inputs_for_infer 限制)传播到输出。当前支持的模式为 SameAsMDBroadcast。‘output_element_type’:可选。输出张量的元素类型。如果未指定,则遵循形状推理模式的行为。通常使用第一个输入的元素类型。每个 CustomOp 实例可以有自己的形状推理属性,从而实现定制。然而,具有相同 function_name 的 CustomOps 在形状推理方面通常表现相似,因此具有相同的属性。

对于 ONNX Op,现有的形状推理模式已重新用于 CustomOp,形状推理的多态性基于其属性值。由于 ONNX Op 的当前实现,具有指定形状推理属性的 CustomOp 只支持一个输出,而不是可变输出。

当未提供形状推理属性时,CustomOp 的形状推理将简单地传递。

所有这些附加属性都是可选的,设计得不那么侵入。当添加新属性时,.mlir 文件可以保持不变。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
function_name::mlir::StringAttr字符串属性
output_element_type::mlir::TypeAttr任何类型属性
shape_infer_pattern::mlir::StringAttr字符串属性
inputs_for_infer::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
inputs 任何类型值的可变张量、任何类型值的 memref 或 None 类型

结果

结果 描述
outputs 任何类型值的可变张量、任何类型值的 memref 或 None 类型

onnx.DFT (ONNXDFTOp)

ONNX DFT 操作

计算输入的离散傅立叶变换 (DFT)。

假设输入具有形状 [M, N],其中 N 是计算 DFT 的维度,而 M 表示概念上的“所有其他维度”,形状为 [M, N] 的 DFT y[m, k] 定义为

\[y[m, k] = \sum_{n=0}^{N-1} e^{-2 \pi j \frac{k n}{N} } x[m, n] ,\]

而反变换定义为

\[x[m, n] = \frac{1}{N} \sum_{k=0}^{N-1} e^{2 \pi j \frac{k n}{N} } y[m, k] ,\]

其中 $j$ 是虚数单位。

输出的实际形状在“输出”部分指定。

参考: https://docs.scipy.org.cn/doc/scipy/tutorial/fft.html

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
inverse::mlir::IntegerAttr64位有符号整数属性
onesided::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
dft_length 32位无符号整数值张量或64位无符号整数值张量或None类型
64位无符号整数值张量或None类型

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.DFTV17 (ONNXDFTV17Op)

ONNX DFT 操作

计算输入的离散傅立叶变换。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
inverse::mlir::IntegerAttr64位有符号整数属性
onesided::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
dft_length 32位无符号整数值张量或64位无符号整数值张量或None类型

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.DeformConv (ONNXDeformConvOp)

ONNX DeformConv 操作

执行可变形卷积,如 https://arxiv.org/abs/1703.06211 和 https://arxiv.org/abs/1811.11168 中所述。此运算符规范支持通用的 N 维情况。请注意,最常见的用例是 2D 或 3D 数据。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
dilations::mlir::ArrayAttr64位整数数组属性
group::mlir::IntegerAttr64位有符号整数属性
kernel_shape::mlir::ArrayAttr64位整数数组属性
offset_group::mlir::IntegerAttr64位有符号整数属性
pads::mlir::ArrayAttr64位整数数组属性
strides::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
W bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
offset bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
B bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
mask bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.DepthToSpace (ONNXDepthToSpaceOp)

ONNX DepthToSpace 操作

DepthToSpace 将深度维度的数据重新排列(置换)到空间数据块中。这是 SpaceToDepth 的反向变换。更具体地说,此 op 输出输入张量的副本,其中深度维度中的值按空间块移动到高度和宽度维度。默认情况下,mode = DCR。在 DCR 模式下,输入张量的深度维度中的元素按以下顺序重新排列:深度、列、然后是行。输出 y 的计算方法如下:

b, c, h, w = x.shape
tmp = np.reshape(x, [b, blocksize, blocksize, c // (blocksize**2), h, w])
tmp = np.transpose(tmp, [0, 3, 4, 1, 5, 2])
y = np.reshape(tmp, [b, c // (blocksize**2), h * blocksize, w * blocksize])

在 CRD 模式下,输入张量的深度维度中的元素按以下顺序重新排列:列、行、然后是深度。输出 y 的计算方法如下:

b, c, h, w = x.shape
tmp = np.reshape(x, [b, c // (blocksize ** 2), blocksize, blocksize, h, w])
tmp = np.transpose(tmp, [0, 1, 4, 2, 5, 3])
y = np.reshape(tmp, [b, c // (blocksize ** 2), h * blocksize, w * blocksize])

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
blocksize::mlir::IntegerAttr64位有符号整数属性
mode::mlir::StringAttr字符串属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.DequantizeLinear (ONNXDequantizeLinearOp)

ONNX DequantizeLinear 操作

线性反量化运算符。它接收一个量化张量、一个比例因子和一个零点,以计算全精度张量。反量化公式为 y = (x - x_zero_point) * x_scalex_scalex_zero_point 必须具有相同的形状,并且可以是用于每张量/每层量化的标量,或者用于按轴量化的 1D 张量。 x_zero_pointx 必须具有相同的类型。 xy 必须具有相同的形状。在反量化 int32 的情况下,没有零点(零点假定为 0)。zero-point 通常在 float8e4m3fn、float8e4m3fnuz、float8e5m2、float8e5m2fnuz 量化的情况下不使用,但为了保持一致性,反量化公式保持不变,并且“x_scale”仍然确定输出类型。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
x 8位无符号整数值张量或8位无符号整数值张量或32位无符号整数值张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量
x_scale 32位浮点值张量或16位浮点值张量或bfloat16类型值张量
x_zero_point 8位无符号整数值张量或8位无符号整数值张量或32位无符号整数值张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或None类型

结果

结果 描述
y 32位浮点值张量或16位浮点值张量或bfloat16类型值张量

onnx.Det (ONNXDetOp)

ONNX Det 操作

Det 计算方阵或方阵批次的行列式。Det 接收一个形状为 [*, M, M] 的输入张量,其中 * 是零个或多个批次维度,内层 2 个维度构成方阵。输出是一个形状为 [*] 的张量,包含所有输入子矩阵的行列式。例如,当输入为 2D 时,输出为标量(形状为空:[])。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.DictVectorizer (ONNXDictVectorizerOp)

ONNX DictVectorizer 操作

使用索引映射将字典转换为数组。
给定一个字典,每个键将在与键类型对应的词汇表属性中查找。然后在词汇表数组中找到键的索引,并将其插入到字典 'X' 中找到的值。
输入映射的键类型必须与定义的词汇表属性的元素类型相对应。因此,输出数组的长度将等于索引映射向量参数的长度。输入字典中的所有键都必须存在于索引映射向量中。对于输入字典中的每个项,将其值插入输出数组。不在输入字典中的任何键将在输出数组中为零。
例如:如果 string_vocabulary 参数设置为 ["a", "c", "b", "z"],则输入 {"a": 4, "c": 8} 将产生输出 [4, 8, 0, 0]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
int64_vocabulary::mlir::ArrayAttr64位整数数组属性
string_vocabulary::mlir::ArrayAttr字符串数组属性

操作数

操作数 描述
X 任意字符串类型或64位无符号整数值的元组,或任意64位无符号整数和字符串类型值的元组,或任意64位无符号整数和32位浮点值的元组,或任意64位无符号整数和64位浮点值的元组,或任意字符串类型和32位浮点值类型的元组,或任意字符串类型和64位浮点值类型的元组

结果

结果 描述
Y 64位无符号整数值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量

onnx.DimGroup (ONNXDimGroupOp)

ONNX 维度分组操作。

此操作用于将张量的编译时未知维度链接到组 ID。具有相同组 ID 的两个维度在运行时应该相等。

"onnx.DimGroup"(%tensor) {axis = 0 : si64, group_id = 1: si64} : (tensor<?x3x5xf32>) -> ()

axis 标识张量中的维度位置。

group_id 标识维度的组 ID。它为非负数。 group_id 的值为 -1 表示该维度不属于任何组。

此操作目前用于 --onnx-dim-analysis 传递,用于测试未知维度分析类。

此操作不是标准的一部分,已添加以协助 onnx-mlir。

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
group_id::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Dim (ONNXDimOp)

ONNX 维度操作。

此操作用于获取张量的维度;

"onnx.Dim"(%tensor) {axis = 0 : si64} : (tensor<?x3x5xf32>) -> tensor<1xi64>

axis 标识将要获取的形状内的维度。

此操作不是标准的一部分,已添加以协助 onnx-mlir。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
dim 64位无符号整数值张量

onnx.Div (ONNXDivOp)

ONNX Div 操作

执行逐元素的二进制除法(支持 Numpy 风格的广播)。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

(Opset 14 更改):扩展支持的类型以包括 uint8、int8、uint16 和 int16。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
B 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
C 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Dropout (ONNXDropoutOp)

ONNX Dropout 操作

Dropout 接收一个输入浮点张量、一个可选的比例输入(浮点标量)和一个可选的 training_mode 输入(布尔标量)。它产生两个张量输出,output(浮点张量)和 mask(可选 Tensor<bool>)。如果 training_mode 为 true,则输出 Y 将是随机丢弃;请注意,此 Dropout 会按以下公式缩放掩码输入数据,因此要将训练好的模型转换为推理模式,用户只需不传递 training_mode 输入或将其设置为 false。

output = scale * data * mask,

其中

scale = 1. / (1. - ratio).

此操作具有**可选**输入/输出。有关可选参数表示形式的更多详细信息,请参阅文档。可以使用空字符串代替实际参数的名称来表示缺失的参数。后面的可选参数(那些后面没有跟随现有参数的参数)也可以简单地省略。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
seed::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量
ratio bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或None类型
training_mode 1位无符号整数值张量或None类型

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量
mask 1位无符号整数值张量或None类型

onnx.DynamicQuantizeLinear (ONNXDynamicQuantizeLinearOp)

ONNX DynamicQuantizeLinear 操作

一个函数,用于融合 FP32 输入数据的 Scale、Zero Point 和 FP32->8 位转换的计算。输出给定 FP32 输入的 Scale、ZeroPoint 和 Quantized Input。Scale 的计算公式为:

y_scale = (maximum(0, max(x)) - minimum(0, min(x))) / (qmax - qmin)

Zero point 的计算公式为:

intermediate_zero_point = qmin - min(x)/y_scale
y_zero_point = cast(round(saturate(itermediate_zero_point)))

数据量化公式为:

y = saturate (round (x / y_scale) + y_zero_point)

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
x 32位浮点值张量

结果

结果 描述
y 8位无符号整数值张量
y_scale 32位浮点值张量
y_zero_point 8位无符号整数值张量

onnx.Einsum (ONNXEinsumOp)

ONNX Einsum 操作

形式为 term1, term2 -> output-term 的 einsum 使用以下公式计算输出张量:

output[output-term] = reduce-sum( input1[term1] * input2[term2] )

其中,reduce-sum 对输入项(term1, term2)中所有出现但不在 output-term 中的索引执行求和。

Einsum 运算符使用 Einstein 求和约定对一系列张量进行代数张量运算。方程字符串包含逗号分隔的小写字母序列。每个项对应一个操作数张量,项内的字符对应于操作数维度。

此序列后可跟“->”以分隔方程的左右两侧。如果方程包含“->”后跟右侧,则执行显式(非经典)Einstein 求和,右侧索引指示输出张量维度。在其他情况下,输出索引(隐式)设置为方程中仅出现一次的索引的字母排序序列。

当左侧的维度字符重复时,表示沿该维度进行求和。

方程可能包含省略号(“…”)以启用广播。省略号必须表示固定数量的维度。具体来说,省略号的每个出现都必须表示相同数量的维度。右侧可能只包含一个省略号。在隐式模式下,省略号维度将设置在输出的开头。方程字符串可能包含空格(U+0020)字符。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
equation::mlir::StringAttr字符串属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Output 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Elu (ONNXEluOp)

ONNX Elu 操作

Elu 接收一个输入数据(Tensor)) 并生成一个输出数据 (张量,并逐元素地对张量应用函数 `f(x) = alpha * (exp(x) - 1.) for x < 0`, `f(x) = x for x >= 0`。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
alpha::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.EntryPoint (ONNXEntryPointOp)

指示 ONNX 入口点

“onnx.EntryPoint”函数指示 ONNX 模型的主入口点。

此操作不是标准的一部分,已添加以协助 onnx-mlir。

属性

属性MLIR 类型描述
func::mlir::SymbolRefAttr符号引用属性

onnx.Equal (ONNXEqualOp)

ONNX Equal 操作

执行输入张量 AB 之间的逻辑“等于”运算,逐元素地得到结果张量(支持 Numpy 风格的广播)。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 1位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量或字符串类型值张量
B 1位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量或字符串类型值张量

结果

结果 描述
C 1位无符号整数值张量

onnx.Erf (ONNXErfOp)

ONNX Erf 操作

逐元素计算给定输入张量的误差函数。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Exp (ONNXExpOp)

ONNX Exp 操作

逐元素计算给定输入张量的指数。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Expand (ONNXExpandOp)

ONNX Expand 操作

根据给定的形状和广播规则广播输入张量。广播规则类似于 numpy.array(input) * numpy.ones(shape):维度右对齐;两个对应的维度必须具有相同的值,或者其中一个等于 1。此外,此运算符类似于 numpy.broadcast_to(input, shape),但主要区别在于 numpy.broadcast_to() 不允许 shape 小于 input.size()。当 output.shape 不等于 shape 时,某些维度在 shape 中等于 1,或者 shape.ndim < input.shape.ndim,这是可能的。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
shape 64位无符号整数值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.EyeLike (ONNXEyeLikeOp)

ONNX EyeLike 操作

生成一个 2D 张量(矩阵),对角线上为 1,其他位置为 0。仅支持 2D 张量,即输入 T1 必须是秩 2。输出张量的形状与输入张量相同。数据类型可以通过“dtype”参数指定。如果未指定“dtype”,则使用输入张量的类型。默认情况下,主对角线用 1 填充,但可以使用“k”属性填充上对角线或下对角线。“dtype”参数必须是 TensorProto 消息中的 DataType 枚举字段中指定的数据类型之一,并且是有效的输出类型。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
dtype::mlir::IntegerAttr64位有符号整数属性
k::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或1位无符号整数值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或1位无符号整数值张量

onnx.FeatureVectorizer (ONNXFeatureVectorizerOp)

ONNX FeatureVectorizer 操作

将输入张量连接成一个连续的输出。
所有输入形状均为 2D,并沿第二个维度连接。1D 张量被视为 [1,C]。输入按原样复制到输出,保持输入参数的顺序。
所有输入必须是整数或浮点数,而输出将全部是浮点值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
inputdimensions::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
X 32位无符号整数值张量或64位无符号整数值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y 32位浮点值张量

onnx.Flatten (ONNXFlattenOp)

ONNX Flatten 操作

将输入张量展平成一个 2D 矩阵。如果输入张量的形状为 (d_0, d_1, … d_n),则输出的形状为 (d_0 X d_1 … d_(axis-1), d_axis X d_(axis+1) … X dn)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量

onnx.Floor (ONNXFloorOp)

ONNX Floor 操作

Floor 接收一个输入数据(Tensor)) 并生成一个输出数据 (张量,并逐元素地对张量应用 floor,y = floor(x)。如果 x 是整数、+0、-0、NaN 或无穷大,则返回 x 本身。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
Y 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.GRU (ONNXGRUOp)

ONNX GRU 操作

计算单层 GRU。此运算符通常通过某些自定义实现(如 CuDNN)来支持。

符号

激活函数

注意:以下是可选的

方程(默认:f=Sigmoid,g=Tanh)

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
activation_alpha::mlir::ArrayAttr32位浮点数数组属性
activation_beta::mlir::ArrayAttr32位浮点数数组属性
activations::mlir::ArrayAttr字符串数组属性
clip::mlir::FloatAttr32位浮点属性
direction::mlir::StringAttr字符串属性
hidden_size::mlir::IntegerAttr64位有符号整数属性
layout::mlir::IntegerAttr64位有符号整数属性
linear_before_reset::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
W bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
R bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
B bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
sequence_lens 32位无符号整数值张量或None类型
initial_h bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
Y_h bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型

onnx.GatherElements (ONNXGatherElementsOp)

ONNX GatherElements 操作

GatherElements 接收两个输入 dataindices,它们的秩 r >= 1,以及一个可选属性 axis,该属性标识 data 的一个轴(默认最外层轴,即 axis 0)。它是一个索引操作,通过根据 indices 张量中的元素确定的索引位置来索引输入数据张量,从而生成其输出。其输出形状与 indices 的形状相同,并包含一个值(从 data 中收集)对应于 indices 中的每个元素。

例如,在 3D 情况(r = 3)下,生成的输出由以下方程确定:

out[i][j][k] = input[index[i][j][k]][j][k] if axis = 0,
out[i][j][k] = input[i][index[i][j][k]][k] if axis = 1,
out[i][j][k] = input[i][j][index[i][j][k]] if axis = 2,

此运算符也是 ScatterElements 的逆运算。它类似于 Torch 的 gather 操作。

示例 1

data = [
    [1, 2],
    [3, 4],
]
indices = [
    [0, 0],
    [1, 0],
]
axis = 1
output = [
    [1, 1],
    [4, 3],
]

示例 2

data = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]
indices = [
    [1, 2, 0],
    [2, 0, 0],
]
axis = 0
output = [
    [4, 8, 3],
    [7, 2, 3],
]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
indices 32位无符号整数值张量或64位无符号整数值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.GatherND (ONNXGatherNDOp)

ONNX GatherND 操作

给定秩为 r >= 1 的 data 张量、秩为 q >= 1 的 indices 张量以及整数 batch_dims b,此运算符将 data 的切片收集到秩为 q + r - indices_shape[-1] - 1 - b 的输出张量中。

indices 是一个 q 维整数张量,最好将其视为索引元组的 (q-1) 维张量,其中每个元素定义了 data 的一个切片。

batch_dims(表示为 b)是一个整数,表示批次维度的数量,即 data 张量和 indices 的前 b 个维度表示批次,并且收集从 b+1 维度开始。

关于输入的秩和形状的一些要点:

1) r >= 1 和 q >= 1 必须得到满足。秩 rq 之间没有依赖条件。

2) indices 张量和 data 张量的形状的前 b 个维度必须相等。

3) 必须满足 b < min(q, r)。

4) indices_shape[-1] 的值应介于 1(包含)和秩 r-b(包含)之间。

5) indices 中的所有值都应在轴 s(即 -data_shape[i] <= indices[...,i] <= data_shape[i] - 1)上位于边界 [-s, s-1] 内。如果任何索引值超出边界,则会报错。

输出的计算方法如下:

输出张量通过将 indices 张量中的每个索引元组映射到输入 data 的相应切片来获得。

1) 如果 indices_shape[-1] > r-b => 错误条件

2) 如果 indices_shape[-1] == r-b,由于 indices 的秩为 qindices 可以被视为 N(q-b-1) 维张量,其中包含维度为 r-b 的 1D 张量,其中 N 是一个整数,等于 1 和 indices_shape 的所有批次维度元素之积。我们将每个这样的 r-b 秩张量视为 indices_slice。每个对应于 data[0:b-1,indices_slice] 的*标量值*被填入 (q-b-1) 维张量的相应位置,以形成 output 张量(示例如下 1)。

3) 如果 indices_shape[-1] < r-b,由于 indices 的秩为 qindices 可以被视为 N(q-b-1) 维张量,其中包含维度为 < r-b 的 1D 张量。我们将每个这样的张量视为 indices_slice。对应于 data[0:b-1, indices_slice , :] 的每个*张量切片*被填入 (q-b-1) 维张量的相应位置,以形成 output 张量(示例 2、3、4 和 5 如下)。

此运算符是 ScatterND 的逆运算。

示例 1

batch_dims = 0
data    = [[0,1],[2,3]]   # data_shape    = [2, 2]
indices = [[0,0],[1,1]]   # indices_shape = [2, 2]
output  = [0,3]           # output_shape  = [2]

示例 2

batch_dims = 0
data    = [[0,1],[2,3]]  # data_shape    = [2, 2]
indices = [[1],[0]]      # indices_shape = [2, 1]
output  = [[2,3],[0,1]]  # output_shape  = [2, 2]

示例 3

batch_dims = 0
data    = [[[0,1],[2,3]],[[4,5],[6,7]]] # data_shape    = [2, 2, 2]
indices = [[0,1],[1,0]]                 # indices_shape = [2, 2]
output  = [[2,3],[4,5]]                 # output_shape  = [2, 2]

示例 4

batch_dims = 0
data    = [[[0,1],[2,3]],[[4,5],[6,7]]] # data_shape    = [2, 2, 2]
indices = [[[0,1]],[[1,0]]]             # indices_shape = [2, 1, 2]
output  = [[[2,3]],[[4,5]]]             # output_shape  = [2, 1, 2]

示例 5

batch_dims = 1
data    = [[[0,1],[2,3]],[[4,5],[6,7]]] # data_shape    = [2, 2, 2]
indices = [[1],[0]]                     # indices_shape = [2, 1]
output  = [[2,3],[4,5]]                 # output_shape  = [2, 2]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
batch_dims::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
indices 64位无符号整数值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Gather (ONNXGatherOp)

ONNX Gather 操作

给定秩为 r >= 1 的 data 张量和秩为 q 的 indices 张量,通过 indices 索引 data 的轴维度(默认最外层,axis=0),并将它们连接成秩为 q + (r - 1) 的输出张量。

如果 axis = 0,设 k = indices[i_{0}, ..., i_{q-1\}\],则 output[i_{0}, ..., i_{q-1}, j_{0}, ..., j_{r-2\}\] = input[k , j_{0}, ..., j_{r-2\}\]

data = [
    [1.0, 1.2],
    [2.3, 3.4],
    [4.5, 5.7],
]
indices = [
    [0, 1],
    [1, 2],
]
output = [
    [
        [1.0, 1.2],
        [2.3, 3.4],
    ],
    [
        [2.3, 3.4],
        [4.5, 5.7],
    ],
]

如果 axis = 1,设 k = indices[i_{0}, ..., i_{q-1\}\],则 output[j_{0}, i_{0}, ..., i_{q-1}, j_{1}, ..., j_{r-2\}\] = input[j_{0}, k, j_{1}, ..., j_{r-2\}\]

data = [
    [1.0, 1.2, 1.9],
    [2.3, 3.4, 3.9],
    [4.5, 5.7, 5.9],
]
indices = [
    [0, 2],
]
axis = 1,
output = [
        [[1.0, 1.9]],
        [[2.3, 3.9]],
        [[4.5, 5.9]],
]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
indices 32位无符号整数值张量或64位无符号整数值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Gelu (ONNXGeluOp)

ONNX Gelu 操作

Gelu 接收一个输入数据(Tensor)) 并生成一个输出数据 (张量,并逐元素地对张量应用高斯误差线性单元函数,$y = 0.5 * x * (1 + erf(x/sqrt(2)))$。如果属性“approximate”设置为“tanh”,则使用函数估计,$y = 0.5 * x * (1 + Tanh(sqrt(2/\pi) * (x + 0.044715 * x^3)))$ 并逐元素地应用于张量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
approximate::mlir::StringAttr字符串属性

操作数

操作数 描述
X 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
Y 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Gemm (ONNXGemmOp)

ONNX Gemm 操作

通用矩阵乘法:https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms#Level_3

计算 Y = alpha * A’ * B’ + beta * C,其中输入张量 A 的形状为 (M, K) 或 (K, M),输入张量 B 的形状为 (K, N) 或 (N, K),输入张量 C 可广播到形状 (M, N),输出张量 Y 的形状为 (M, N)。如果属性 transA 非零,则在进行计算之前会转置 A,对 B 和 transB 也一样。此运算符支持**单向广播**(张量 C 应可单向广播到张量 A * B);有关更多详细信息,请参阅文档。此操作具有**可选**输入/输出。有关可选参数表示形式的更多详细信息,请参阅文档。可以使用空字符串代替实际参数的名称来表示缺失的参数。后面的可选参数(那些后面没有跟随现有参数的参数)也可以简单地省略。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
alpha::mlir::FloatAttr32位浮点属性
beta::mlir::FloatAttr32位浮点属性
transA::mlir::IntegerAttr64位有符号整数属性
transB::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
A 16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或32位无符号整数值张量,或64位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或bfloat16类型值张量
B 16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或32位无符号整数值张量,或64位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或bfloat16类型值张量
C 16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或32位无符号整数值张量,或64位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或bfloat16类型值张量,或None类型

结果

结果 描述
Y 16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或32位无符号整数值张量,或64位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或bfloat16类型值张量

onnx.GlobalAveragePool (ONNXGlobalAveragePoolOp)

ONNX GlobalAveragePool 操作

GlobalAveragePool 接收一个输入张量 X,并对同一通道内的值应用平均池化。这等同于使用与输入张量空间维度相同的核大小的 AveragePool。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.GlobalLpPool (ONNXGlobalLpPoolOp)

ONNX GlobalLpPool 操作

GlobalLpPool 接收一个输入张量 X,并对同一通道内的值应用 Lp 池化。这等同于使用与输入张量空间维度相同的核大小的 LpPool。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
p::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.GlobalMaxPool (ONNXGlobalMaxPoolOp)

ONNX GlobalMaxPool 操作

GlobalMaxPool 接收一个输入张量 X,并对同一通道内的值应用最大池化。这等同于使用与输入张量空间维度相同的核大小的 MaxPool。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Gradient (ONNXGradientOp)

ONNX Gradient 操作

Gradient 操作符计算特定张量相对于其他张量的偏导数。该操作符广泛用于基于梯度的训练算法。为了说明其用法,我们考虑一个计算图,

X -----.
       |
       v
W --> Conv --> H --> Gemm --> Y
                      ^
                      |
                      Z

其中 W 和 Z 是可训练张量。请注意,为了简化起见,操作符的属性被省略了。令 dY/dW (dY/dZ) 为 Y 相对于 W (Z) 的梯度。用户可以通过插入 Gradient 操作符来计算梯度,从而形成如下另一个图。

W --> Conv --> H --> Gemm --> Y
|      ^              ^
|      |              |
|      X              Z
|      |              |
|      |   .----------'
|      |   |  (W/Z/X is the 1st/2nd/3rd input of Gradient as shown in
|      |   |   \"xs\" followed by \"zs\")
|      v   v
'---> Gradient(xs=[\"W\", \"Z\"], zs=[\"X\"], y=\"Y\")
       |   |
       |   '-----------------------------------> dY/dW (1st output of Gradient)
       |
       '---------------------------------------> dY/dZ (2nd output of Gradient)

根据定义,张量“y”是独立变量“xs”和“zs”的函数。由于我们只计算“y”相对于可微分变量“xs”的梯度,因此此 Gradient 只输出 dY/dW 和 dY/dZ。请注意,“H”不能出现在“xs”和“zs”中。原因是“H”可以由张量“W”和“X”确定,因此“H”不是独立变量。

所有输出都是可选的。如果需要,例如,用户可以将第一个输出名称的字符串值设置为空,以跳过 dY/dW 的生成。请注意,可选输出的概念也存在于 ONNX 的 RNN、GRU 和 LSTM 中。

Gradient 操作符可以计算相对于中间张量的导数。例如,Y 相对于 H 的梯度可以通过以下方式完成:

W --> Conv --> H --> Gemm --> Y
       ^       |      ^
       |       |      |
       X       |      Z
       .-------'      |
       |   .----------'
       |   | (H/Z is the 1st/2nd input of Gradient as shown in \"xs\")
       v   v
      Gradient(xs=[\"H\", \"Z\"], y=\"Y\")
       |   |
       |   '-----------------------------------> dY/dH (1st output of Gradient)
       |
       '---------------------------------------> dY/dZ (2nd output of Gradient)

可以使用 Gradient 操作符表示高阶微分。例如,给定以下线性模型

W --> Gemm --> Y --> Loss --> O
       ^              ^
       |              |
       X              L

要计算 O 相对于 W 的二阶导数(表示为 d^2O/dW^2),可以执行以下操作:

W --> Gemm --> Y --> Loss --> O
|      ^              ^
|      |              |
|      X .------------L
|      | |            |
|      | |            v
+------+-+> Gradient(xs=[\"X\", \"W\"], zs=[\"L\"], y=\"O\") ---> dO/dX (1st output of Gradient)
|      | |    |
|      | |    '---> dO/dW (2nd output of Gradient)
|      v v
'---> Gradient(xs=[\"X\", \"W\"], zs=[\"L\"], y=\"dO/dW\") ---> d(dO/dW)dX (1st output of
       |                                                  Gradient)
       |
       |
       '---> d^2O/dW^2 (2nd output of Gradient)

属性“xs”、“zs”和“y”中命名的张量定义了微分计算图,而 Gradient 节点上的输入定义了计算梯度的值。我们可以为已识别的图输入不同的张量。例如,可以通过将 H_1 值作为 Gradient 节点的输入来计算 Y 相对于 H 在特定值 H_1 处的梯度。

W --> Conv --> H --> Gemm --> Y
       ^              ^
       |              |
       X              Z

          Z_1 (2nd input of Gradient)
           |
           v
H_1 --> Gradient(xs=[\"H\", \"Z\"], y=\"Y\") ---> dY/dH when H = H_1 and Y = Y_1.
           |
           '------------------------------> dY/dZ (2nd output of Gradient)

当 Gradient 的输入是“xs”和“zs”中命名的张量时,可以优化计算。更具体地说,如果通过反向模式自动微分计算梯度,则可以重用正向传递中的中间变量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
xs::mlir::ArrayAttr字符串数组属性
y::mlir::StringAttr字符串属性
zs::mlir::ArrayAttr字符串数组属性

操作数

操作数 描述
输入 8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或字符串类型值张量,或1位无符号整数值张量,或带32位浮点元素的复数类型值张量,或带64位浮点元素的复数类型值张量,或f8E4M3FN类型值张量,或f8E4M3FNUZ类型值张量,或f8E5M2类型值张量,或f8E5M2FNUZ类型值张量,或4位无符号整数值张量,或4位无符号整数值张量,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或16位浮点值张量的SeqType,或32位浮点值张量的SeqType,或64位浮点值张量的SeqType,或字符串类型值张量的SeqType,或1位无符号整数值张量的SeqType,或带32位浮点元素的复数类型值张量的SeqType,或带64位浮点元素的复数类型值张量的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或16位浮点值张量OptType的SeqType,或32位浮点值张量OptType的SeqType,或64位浮点值张量OptType的SeqType,或字符串类型值张量OptType的SeqType,或1位无符号整数值张量OptType的SeqType,或带32位浮点元素的复数类型值张量OptType的SeqType,或带64位浮点元素的复数类型值张量OptType的SeqType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或16位浮点值张量OptType,或32位浮点值张量OptType,或64位浮点值张量OptType,或字符串类型值张量OptType,或1位无符号整数值张量OptType,或带32位浮点元素的复数类型值张量OptType,或带64位浮点元素的复数类型值张量OptType,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或字符串类型值张量,或1位无符号整数值张量,或带32位浮点元素的复数类型值张量,或带64位浮点元素的复数类型值张量,或f8E4M3FN类型值张量,或f8E4M3FNUZ类型值张量,或f8E5M2类型值张量,或f8E5M2FNUZ类型值张量,或4位无符号整数值张量,或4位无符号整数值张量,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或bfloat16类型值张量的SeqType,或16位浮点值张量的SeqType,或32位浮点值张量的SeqType,或64位浮点值张量的SeqType,或字符串类型值张量的SeqType,或1位无符号整数值张量的SeqType,或带32位浮点元素的复数类型值张量的SeqType,或带64位浮点元素的复数类型值张量的SeqType,或f8E4M3FN类型值张量的SeqType,或f8E4M3FNUZ类型值张量的SeqType,或f8E5M2类型值张量的SeqType,或f8E5M2FNUZ类型值张量的SeqType,或4位无符号整数值张量的SeqType,或4位无符号整数值张量的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或bfloat16类型值张量OptType的SeqType,或16位浮点值张量OptType的SeqType,或32位浮点值张量OptType的SeqType,或64位浮点值张量OptType的SeqType,或字符串类型值张量OptType的SeqType,或1位无符号整数值张量OptType的SeqType,或带32位浮点元素的复数类型值张量OptType的SeqType,或带64位浮点元素的复数类型值张量OptType的SeqType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或bfloat16类型值张量OptType,或16位浮点值张量OptType,或32位浮点值张量OptType,或64位浮点值张量OptType,或字符串类型值张量OptType,或1位无符号整数值张量OptType,或带32位浮点元素的复数类型值张量OptType,或带64位浮点元素的复数类型值张量OptType,或f8E4M3FN类型值张量OptType,或f8E4M3FNUZ类型值张量OptType,或f8E5M2类型值张量OptType,或f8E5M2FNUZ类型值张量OptType,或4位无符号整数值张量OptType,或4位无符号整数值张量OptType

结果

结果 描述
输出 16位浮点值张量,或32位浮点值张量,或64位浮点值张量

onnx.Greater (ONNXGreaterOp)

ONNX Greater 操作

在输入张量 AB 上逐元素执行“大于”逻辑运算(支持 Numpy 风格的广播),并返回结果张量。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
B 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
C 1位无符号整数值张量

onnx.GreaterOrEqual (ONNXGreaterOrEqualOp)

ONNX GreaterOrEqual 操作

在输入张量 AB 上逐元素执行“大于等于”逻辑运算(支持 Numpy 风格的广播),并返回结果张量。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
B 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
C 1位无符号整数值张量

onnx.GridSample (ONNXGridSampleOp)

ONNX GridSample 操作

给定输入 X 和流场 grid,使用 X 的值和 grid 中的像素位置计算输出 Y。对于形状为 (N, C, H, W) 的空间输入 Xgrid 的形状为 (N, H_out, W_out, 2),输出 Y 的形状为 (N, C, H_out, W_out)。对于形状为 (N, C, D, H, W) 的体积输入 Xgrid 的形状为 (N, D_out, H_out, W_out, 3),输出 Y 的形状为 (N, C, D_out, H_out, W_out)。更一般地,对于秩为 r+2、形状为 (N, C, d1, d2, …, dr) 的输入 Xgrid 的形状为 (N, D1_out, D2_out, …, Dr_out, r),输出 Y 的形状为 (N, C, D1_out, D2_out, …, Dr_out)。

张量 X 包含位于正方形像素(体素等)中心的位置的值,例如 (n, c, d1_in, d2_in, …, dr_in)。张量 grid 中的 (n, d1_out, d2_out, …, dr_out, :) 值是用于通过指定的插值方法(模式)和填充模式(用于 grid 位置超出二维图像范围的情况)对输出张量 Y 中的 (n, c, d1_out, d2_out, …, dr_out) 位置的值进行插值的归一化位置。

例如,grid[n, h_out, w_out, :] 中的值是大小为 2 的向量,用于指定 X 的二维空间中的归一化位置。它们用于插值输出 Y[n, c, h_out, w_out] 的值。

GridSample 操作符经常用于 Spatial Transformer Networks 中进行网格生成器和采样器。另请参阅 torch.nn.functional.grid_sample

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
align_corners::mlir::IntegerAttr64位有符号整数属性
mode::mlir::StringAttr字符串属性
padding_mode::mlir::StringAttr字符串属性

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
grid bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.GridSampleV16 (ONNXGridSampleV16Op)

ONNX GridSample 操作

给定输入 X 和流场 grid,使用 X 的值和 grid 中的像素位置计算输出 Y。目前仅支持空间(4D)输入。对于形状为 (N, C, H, W) 的输入 X 和形状为 (N, H_out, W_out, 2) 的 grid,输出 Y 的形状为 (N, C, H_out, W_out)。

张量 X 包含位于 H x W 二维图像像素中心的位置的值。张量 grid 描述了使用指定的插值方法(模式)和填充模式(用于网格位置超出二维图像范围的情况)计算输出 Y 的归一化位置。

grid[N, H_out, W_out] 中的元素是大小为 2 的向量,用于指定 X 二维空间中的位置。它们用于插值输出 Y[N, C, H_out, W_out] 的值。

GridSample 操作符经常用于 Spatial Transformer Networks 中进行网格生成器和采样器。另请参阅 torch.nn.functional.grid_sample

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
align_corners::mlir::IntegerAttr64位有符号整数属性
mode::mlir::StringAttr字符串属性
padding_mode::mlir::StringAttr字符串属性

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
grid 16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.GroupNormalization (ONNXGroupNormalizationOp)

ONNX GroupNormalization 操作

GroupNormalization 函数。根据论文 https://arxiv.org/abs/1803.08494 执行组归一化。

此操作符根据以下公式转换输入:

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

其中,均值和方差是按实例和通道组计算的,scalebias 应为每个通道组指定。组数 num_groups 必须能被通道数整除,以便每个组有相等数量的通道。

整个计算分为两个阶段:第一阶段将元素归一化为每个实例中每个组具有零均值和单位方差;第二阶段对第一阶段的结果进行缩放和偏移。第一阶段使用的浮点精度由 stash_type 属性决定。例如,如果 stash_type 为 1,则操作符会将所有输入变量转换为 32 位浮点数,执行计算,最后将归一化后的结果转换回 X 的原始类型。第二阶段不依赖于 stash_type

当组数与通道数相同时,此操作符等同于 InstanceNormalization。当只有一个组时,此操作符等同于 LayerNormalization。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
epsilon::mlir::FloatAttr32位浮点属性
num_groups::mlir::IntegerAttr64位有符号整数属性
stash_type::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
scale bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
bias bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.GroupNormalizationV18 (ONNXGroupNormalizationV18Op)

ONNX GroupNormalization 操作

GroupNormalization 函数。根据论文 https://arxiv.org/abs/1803.08494 执行组归一化。

此操作符根据以下公式转换输入:

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

其中,均值和方差是按实例和通道组计算的,scalebias 应为每个通道组指定。组数 num_groups 必须能被通道数整除,以便每个组有相等数量的通道。

当组数与通道数相同时,此操作符等同于 InstanceNormalization。当只有一个组时,此操作符等同于 LayerNormalization。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
epsilon::mlir::FloatAttr32位浮点属性
num_groups::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
scale 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
bias 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
Y 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.HammingWindow (ONNXHammingWindowOp)

ONNX HammingWindow 操作

根据论文 https://ieeexplore.ieee.org/document/1455106 生成汉明窗。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
output_datatype::mlir::IntegerAttr64位有符号整数属性
periodic::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
size 32位无符号整数值张量或64位无符号整数值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.HannWindow (ONNXHannWindowOp)

ONNX HannWindow 操作

根据论文 https://ieeexplore.ieee.org/document/1455106 生成汉宁窗。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
output_datatype::mlir::IntegerAttr64位有符号整数属性
periodic::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
size 32位无符号整数值张量或64位无符号整数值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.HardSigmoid (ONNXHardSigmoidOp)

ONNX HardSigmoid 操作

HardSigmoid 接收一个输入数据(张量) 并生成一个输出数据 (张量),其中 HardSigmoid 函数 y = max(0, min(1, alpha * x + beta)) 被逐元素应用于张量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
alpha::mlir::FloatAttr32位浮点属性
beta::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.HardSwish (ONNXHardSwishOp)

ONNX HardSwish 操作

HardSwish 接收一个输入数据(张量) 并生成一个输出数据 (张量),其中 HardSwish 函数 y = x * max(0, min(1, alpha * x + beta)) = x * HardSigmoid<alpha, beta>(x),其中 alpha = 1/6 且 beta = 0.5,被逐元素应用于张量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Hardmax (ONNXHardmaxOp)

ONNX Hardmax 操作

该操作符计算给定输入的 hardmax 值。

Hardmax(输入中的元素, 轴) = 1 如果该元素是沿指定轴的最大值,否则为 0

“axis”属性指示将执行 Hardmax 的维度。输出张量具有相同的形状,并包含相应输入的 Hardmax 值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Identity (ONNXIdentityOp)

ONNX Identity 操作

Identity 操作符

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或bfloat16类型值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或字符串类型值张量,或1位无符号整数值张量,或带32位浮点元素的复数类型值张量,或带64位浮点元素的复数类型值张量,或f8E4M3FN类型值张量,或f8E4M3FNUZ类型值张量,或f8E5M2类型值张量,或f8E5M2FNUZ类型值张量,或4位无符号整数值张量,或4位无符号整数值张量,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或16位浮点值张量的SeqType,或32位浮点值张量的SeqType,或64位浮点值张量的SeqType,或字符串类型值张量的SeqType,或1位无符号整数值张量的SeqType,或带32位浮点元素的复数类型值张量的SeqType,或带64位浮点元素的复数类型值张量的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或16位浮点值张量OptType的SeqType,或32位浮点值张量OptType的SeqType,或64位浮点值张量OptType的SeqType,或字符串类型值张量OptType的SeqType,或1位无符号整数值张量OptType的SeqType,或带32位浮点元素的复数类型值张量OptType的SeqType,或带64位浮点元素的复数类型值张量OptType的SeqType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或16位浮点值张量OptType,或32位浮点值张量OptType,或64位浮点值张量OptType,或字符串类型值张量OptType,或1位无符号整数值张量OptType,或带32位浮点元素的复数类型值张量OptType,或带64位浮点元素的复数类型值张量OptType

结果

结果 描述
输出 8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或bfloat16类型值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或字符串类型值张量,或1位无符号整数值张量,或带32位浮点元素的复数类型值张量,或带64位浮点元素的复数类型值张量,或f8E4M3FN类型值张量,或f8E4M3FNUZ类型值张量,或f8E5M2类型值张量,或f8E5M2FNUZ类型值张量,或4位无符号整数值张量,或4位无符号整数值张量,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或16位浮点值张量的SeqType,或32位浮点值张量的SeqType,或64位浮点值张量的SeqType,或字符串类型值张量的SeqType,或1位无符号整数值张量的SeqType,或带32位浮点元素的复数类型值张量的SeqType,或带64位浮点元素的复数类型值张量的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或16位浮点值张量OptType的SeqType,或32位浮点值张量OptType的SeqType,或64位浮点值张量OptType的SeqType,或字符串类型值张量OptType的SeqType,或1位无符号整数值张量OptType的SeqType,或带32位浮点元素的复数类型值张量OptType的SeqType,或带64位浮点元素的复数类型值张量OptType的SeqType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或16位浮点值张量OptType,或32位浮点值张量OptType,或64位浮点值张量OptType,或字符串类型值张量OptType,或1位无符号整数值张量OptType,或带32位浮点元素的复数类型值张量OptType,或带64位浮点元素的复数类型值张量OptType

onnx.If (ONNXIfOp)

ONNX If 操作

If 条件

特性: AlwaysSpeculatableImplTrait

接口:ConditionallySpeculatable, HasOnnxSubgraphOpInterface, NoMemoryEffect (MemoryEffectOpInterface), ResultTypeInferenceOpInterface, ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
cond 1位无符号整数值张量

结果

结果 描述
outputs 8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或bfloat16类型值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或字符串类型值张量,或1位无符号整数值张量,或带32位浮点元素的复数类型值张量,或带64位浮点元素的复数类型值张量,或f8E4M3FN类型值张量,或f8E4M3FNUZ类型值张量,或f8E5M2类型值张量,或f8E5M2FNUZ类型值张量,或4位无符号整数值张量,或4位无符号整数值张量,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或bfloat16类型值张量的SeqType,或16位浮点值张量的SeqType,或32位浮点值张量的SeqType,或64位浮点值张量的SeqType,或字符串类型值张量的SeqType,或1位无符号整数值张量的SeqType,或带32位浮点元素的复数类型值张量的SeqType,或带64位浮点元素的复数类型值张量的SeqType,或f8E4M3FN类型值张量的SeqType,或f8E4M3FNUZ类型值张量的SeqType,或f8E5M2类型值张量的SeqType,或f8E5M2FNUZ类型值张量的SeqType,或4位无符号整数值张量的SeqType,或4位无符号整数值张量的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或bfloat16类型值张量OptType的SeqType,或16位浮点值张量OptType的SeqType,或32位浮点值张量OptType的SeqType,或64位浮点值张量OptType的SeqType,或字符串类型值张量OptType的SeqType,或1位无符号整数值张量OptType的SeqType,或带32位浮点元素的复数类型值张量OptType的SeqType,或带64位浮点元素的复数类型值张量OptType的SeqType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或bfloat16类型值张量OptType,或16位浮点值张量OptType,或32位浮点值张量OptType,或64位浮点值张量OptType,或字符串类型值张量OptType,或1位无符号整数值张量OptType,或带32位浮点元素的复数类型值张量OptType,或带64位浮点元素的复数类型值张量OptType,或f8E4M3FN类型值张量OptType,或f8E4M3FNUZ类型值张量OptType,或f8E5M2类型值张量OptType,或f8E5M2FNUZ类型值张量OptType,或4位无符号整数值张量OptType,或4位无符号整数值张量OptType

onnx.Imputer (ONNXImputerOp)

ONNX Imputer 操作

将等于某个值的输入替换为另一个值,而其余元素保持不变。
此操作符通常用于在缺失值具有规范表示(例如 -1、0、NaN 或某个极端值)的情况下替换它们。
imputed_value_floats 或 imputed_value_int64s 必须且只能定义一个——如果输入张量包含浮点数,则定义 imputed_value_floats;如果输入张量包含整数,则定义 imputed_value_int64s。imputed 值必须都能容纳在张量元素类型的宽度内。replaced_value_float 或 replaced_value_int64 必须且只能定义一个,具体取决于正在处理的是浮点数还是整数。
imputed_value 属性的长度可以是 1 个元素,也可以是每个输入特征 1 个元素。
换句话说,如果输入张量的形状是 [*,F],则属性数组的长度可以是 1 或 F。如果是 1,则沿最后一个维度进行广播并应用于每个特征。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
imputed_value_floats::mlir::ArrayAttr32位浮点数数组属性
imputed_value_int64s::mlir::ArrayAttr64位整数数组属性
replaced_value_float::mlir::FloatAttr32位浮点属性
replaced_value_int64::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量

结果

结果 描述
Y 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量

onnx.InstanceNormalization (ONNXInstanceNormalizationOp)

ONNX InstanceNormalization 操作

根据论文 https://arxiv.org/abs/1607.08022 执行实例归一化。

y = scale * (x - mean) / sqrt(variance + epsilon) + B,其中均值和方差是按实例和通道计算的。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
epsilon::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
scale bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
B bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.IsInf (ONNXIsInfOp)

ONNX IsInf 操作

将无穷大映射为 true,将其他值映射为 false。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
detect_negative::mlir::IntegerAttr64位有符号整数属性
detect_positive::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量

结果

结果 描述
Y 1位无符号整数值张量

onnx.IsNaN (ONNXIsNaNOp)

ONNX IsNaN 操作

返回输入中哪些元素是 NaN。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量

结果

结果 描述
Y 1位无符号整数值张量

onnx.LRN (ONNXLRNOp)

ONNX LRN 操作

局部响应归一化(Local Response Normalization),在 AlexNet 论文 中提出。它在局部输入区域上进行归一化。局部区域是在通道之间定义的。对于形状为 (N x C x D1 x D2, ..., Dk) 的张量中的元素 X[n, c, d1, ..., dk],其区域是 {X[n, i, d1, ..., dk] | max(0, c - floor((size - 1) / 2)) <= i <= min(C - 1, c + ceil((size - 1) / 2))}

square_sum[n, c, d1, ..., dk] = sum(X[n, i, d1, ..., dk] ^ 2),其中 max(0, c - floor((size - 1) / 2)) <= i <= min(C - 1, c + ceil((size - 1) / 2))

Y[n, c, d1, ..., dk] = X[n, c, d1, ..., dk] / (bias + alpha / size * square_sum[n, c, d1, ..., dk] ) ^ beta

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
alpha::mlir::FloatAttr32位浮点属性
beta::mlir::FloatAttr32位浮点属性
bias::mlir::FloatAttr32位浮点属性
size::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
Y 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.LSTM (ONNXLSTMOp)

ONNX LSTM 操作

计算单层 LSTM。此操作符通常通过一些自定义实现(如 CuDNN)来支持。

符号

激活函数

注意:以下是可选的

方程(默认:f=Sigmoid, g=Tanh, h=Tanh)

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
activation_alpha::mlir::ArrayAttr32位浮点数数组属性
activation_beta::mlir::ArrayAttr32位浮点数数组属性
activations::mlir::ArrayAttr字符串数组属性
clip::mlir::FloatAttr32位浮点属性
direction::mlir::StringAttr字符串属性
hidden_size::mlir::IntegerAttr64位有符号整数属性
input_forget::mlir::IntegerAttr64位有符号整数属性
layout::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
W bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
R bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
B bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
sequence_lens 32位无符号整数值张量或None类型
initial_h bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
initial_c bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
P bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
Y_h bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
Y_c bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型

onnx.LabelEncoder (ONNXLabelEncoderOp)

ONNX LabelEncoder 操作

将输入张量中的每个元素映射到另一个值。
映射由两个并行属性“keys_”和“values_”确定。指定“keys_”属性中的第 i 个值将映射到指定“values_”属性中的第 i 个值。这意味着输入的元素类型和指定“keys_”的元素类型应相同,而输出类型与指定“values_”的类型相同。如果输入元素在指定的“keys_”属性中找不到,则可能使用与指定“values_”属性匹配的“default_”作为其输出值。
让我们考虑一个将字符串张量映射到整数张量的示例。假设“keys_strings”是 [“Amy”, “Sally”],“values_int64s”是 [5, 6],而“default_int64”是 ‘-1’。输入 [“Dori”, “Amy”, “Amy”, “Sally”, “Sally”] 将被映射到 [-1, 5, 5, 6, 6]。
由于此操作符是一对一映射,因此其输入和输出形状相同。请注意,只能设置“keys_”/“values_”中的一个。
对于键查找,使用按位比较,因此即使是浮点 NaN 也可以映射到“values_”属性中的一个值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
default_float::mlir::FloatAttr32位浮点属性
default_int64::mlir::IntegerAttr64位有符号整数属性
default_string::mlir::StringAttr字符串属性
keys_floats::mlir::ArrayAttr32位浮点数数组属性
keys_int64s::mlir::ArrayAttr64位整数数组属性
keys_strings::mlir::ArrayAttr字符串数组属性
values_floats::mlir::ArrayAttr32位浮点数数组属性
values_int64s::mlir::ArrayAttr64位整数数组属性
values_strings::mlir::ArrayAttr字符串数组属性

操作数

操作数 描述
X 字符串类型值张量,或64位无符号整数值张量,或32位浮点值张量

结果

结果 描述
Y 字符串类型值张量,或64位无符号整数值张量,或32位浮点值张量

onnx.LayerNormalization (ONNXLayerNormalizationOp)

ONNX LayerNormalization 操作

这是 ONNX 中定义的层归一化函数。整个计算可分为两个阶段。第一阶段是标准化,它使归一化后的元素具有零均值和单位方差。标准化所需的计算可通过以下方程描述。 Mean = ReduceMean<axes=normalized_axes>(X) D = Sub(X, Mean) DD = Mul(D, D) Var = ReduceMean<axes=normalized_axes>(DD) VarEps = Add(Var, epsilon) StdDev = Sqrt(VarEps) InvStdDev = Reciprocal(StdDev) Normalized = Mul(D, InvStdDev) 其中 normalized_axes[axis, ..., rank of X - 1]。变量 VarStdDev 分别代表方差和标准差。第二个输出是 Mean,最后一个是 InvStdDev。根据 stash_type 属性,实际计算必须以不同的浮点精度进行。例如,如果 stash_type 为 1,则此操作符会将所有输入变量转换为 32 位浮点数,执行计算,最后将 Normalized 转换回 X 的原始类型。然后,第二阶段使用 NormalizedScaled = Mul(Normalized, Scale) Y = Add(NormalizedScaled, B) 来缩放和偏移第一阶段的结果。第二阶段不依赖于 stash_type。所有方程均以此语法表示。相同变量(即输入、输出和属性)在上述方程和此操作符的定义中使用相同的名称。令 d[i] 表示 X 的第 i 个维度。如果 X 的形状为 [d[0], ..., d[axis-1], d[axis], ..., d[rank-1]],则 MeanInvStdDev 的形状为 [d[0], ..., d[axis-1], 1, ..., 1]YX 具有相同的形状。此操作符支持单向广播(张量 ScaleB 应单向可广播到张量 X);有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
epsilon::mlir::FloatAttr32位浮点属性
stash_type::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
Scale 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
B 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量或None类型

结果

结果 描述
Y 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
Mean 32位浮点值张量,或bfloat16类型值张量,或None类型
InvStdDev 32位浮点值张量,或bfloat16类型值张量,或None类型

onnx.LayoutTransform (ONNXLayoutTransformOp)

在不同布局格式之间转换数据的操作

在不同布局格式之间转换数据的操作。布局由属性定义,即 target_layout,这允许此操作符与任意布局(例如,加速器使用的布局)一起工作。

target_layout 是可选的。如果未提供,则输入张量将被转换为不具有布局的普通张量。

如果 target_layout 与输入的布局相同,则此操作符将通过规范化成为一个无操作。

输入和输出张量必须具有相同的形状。

此操作不是标准的一部分,已添加以协助 onnx-mlir。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
target_layout::mlir::Attributelayout 属性

操作数

操作数 描述
data 16位浮点值张量或32位浮点值张量

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量

onnx.LeakyRelu (ONNXLeakyReluOp)

ONNX LeakyRelu 操作

LeakyRelu 接收输入数据(张量)和一个参数 alpha,并产生一个输出数据(张量),其中函数 `f(x) = alpha * x for x < 0`,`f(x) = x for x >= 0` 被逐元素应用于数据张量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
alpha::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Less (ONNXLessOp)

ONNX Less 操作

在输入张量 AB 上逐元素执行“小于”逻辑运算(支持 Numpy 风格的广播),并返回结果张量。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
B 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
C 1位无符号整数值张量

onnx.LessOrEqual (ONNXLessOrEqualOp)

ONNX LessOrEqual 操作

在输入张量 AB 上逐元素执行“小于等于”逻辑运算(支持 Numpy 风格的广播),并返回结果张量。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
B 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
C 1位无符号整数值张量

onnx.LinearClassifier (ONNXLinearClassifierOp)

ONNX LinearClassifier 操作

线性分类器

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
classlabels_ints::mlir::ArrayAttr64位整数数组属性
classlabels_strings::mlir::ArrayAttr字符串数组属性
coefficients::mlir::ArrayAttr32位浮点数数组属性
intercepts::mlir::ArrayAttr32位浮点数数组属性
multi_class::mlir::IntegerAttr64位有符号整数属性
post_transform::mlir::StringAttr字符串属性

操作数

操作数 描述
X 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量

结果

结果 描述
Y 字符串类型值张量或64位无符号整数值张量
Z 32位浮点值张量

onnx.LinearRegressor (ONNXLinearRegressorOp)

ONNX LinearRegressor 操作

广义线性回归评估。
如果 targets 设置为 1(默认值),则执行单变量回归。
如果 targets 设置为 M,则必须将 M 组系数作为序列传递,并且每输入 n 个样本,将输出 M 个结果。
系数数组的长度为 n,并且每组目标的系数是连续的。截距是可选的,但如果提供,则必须与目标数量匹配。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
coefficients::mlir::ArrayAttr32位浮点数数组属性
intercepts::mlir::ArrayAttr32位浮点数数组属性
post_transform::mlir::StringAttr字符串属性
targets::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量

结果

结果 描述
Y 32位浮点值张量

onnx.Log (ONNXLogOp)

ONNX Log 操作

逐元素计算给定输入张量的自然对数。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.LogSoftmax (ONNXLogSoftmaxOp)

ONNX LogSoftmax 操作

该操作符计算给定输入的 log softmax 值。

LogSoftmax(input, axis) = Log(Softmax(input, axis=axis))

“axis”属性指示将执行 LogSoftmax 的维度。输出张量具有相同的形状,并包含相应输入的 LogSoftmax 值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Loop (ONNXLoopOp)

ONNX Loop 操作

通用循环结构。此循环有多个终止条件:

1) 循环计数。在运行时指定的迭代次数。通过指定输入 M 来设置。可选。设置为""以省略。请注意,可以通过传递常量节点作为输入 M 来指定静态循环计数(在图构造时指定)。2) 循环终止条件。这是操作符的一个输入,它决定是否运行第一次迭代,并且是主体图的循环携带依赖。无论是否提供此输入,主体图都必须产生条件变量的值。

下表总结了此操作符的操作模式及其等效的 C 语言代码:

操作符输入定义为(max_trip_count, condition_var)。

示例用法 - cond 和 trip count

graph predict-net {
  %a = Constant[value = <Scalar Tensor [3]>]()
  %b = Constant[value = <Scalar Tensor [6]>]()
  %keepgoing = Constant[value = <Scalar Tensor [1]>]()
  %max_trip_count = Constant[value = <Scalar Tensor [10]>]()
  %keepgoing_out, %b_out, %user_defined_vals = Loop[body = <graph body-net>](%max_trip_count, %keepgoing, %b)
  return
}

graph body-net (
  %i[INT32, scalar]           // iteration number
  %keepgoing_in[BOOL, scalar] // incoming loop-termination-condition; not used
  %b_in[INT32, scalar]        // incoming value of loop-carried-dependency b
) {
  %my_local = Add(%a, %b_in)
  %b_out = Sub(%a, %b_in) // outgoing value of loop-carried-dependency b
  %keepgoing_out = Greater(%my_local, %b_out) // outgoing loop-termination-condition
  %user_defined_val = Add(%b_in, %b_in) // scan-output value to be accumulated
  return %keepgoing_out, %b_out, %user_defined_val
}

示例等效 C 代码

{
  /* User-defined code (enclosing scope) */
  int a = 3, b = 6;
  bool keepgoing = true; // Analogous to input cond
  /* End user-defined code */

  /* Implicitly-defined code */
  const int max_trip_count = 10; // Analogous to input M
  int user_defined_vals[]; // Imagine this is resizable
  /* End implicitly-defined code */
  /* initialize loop-carried variables and scan-output variables */
  bool keepgoing_out = keepgoing
  int b_out = b

  for (int i=0; i < max_trip_count && keepgoing_out; ++i) {
    /* Implicitly-defined code: bind actual parameter values
       to formal parameter variables of loop-body */
    bool keepgoing_in = keepgoing_out;
    bool b_in = b_out;

    /* User-defined code (loop body) */
    int my_local = a + b_in; // Reading value \"a\" from the enclosing scope is fine
    b_out = a - b_in;
    keepgoing_out = my_local > b_out;
    user_defined_val = b_in + b_in; // b_in and b_out are different variables
    /* End user-defined code */

    /* Implicitly defined-code */
    user_defined_vals[i] = user_defined_val // accumulate scan-output values
  }
  // int t = my_local; // Can't do this. my_local is not accessible here.

  // The values below are bound to the output variables of the loop and therefore accessible
  // b_out; user_defined_vals; keepgoing_out;
}

此代码片段有几点值得注意:

1) 封闭作用域中的值(例如,这里的变量“a”)是可见的,并且可以在循环的输入中引用。2) 在循环体内计算的任何需要用于后续迭代或循环后的值都通过循环体中的一对变量来建模,包括输入变量(例如,b_in)和输出变量(例如,b_out)。这些被称为循环携带依赖。循环操作节点为第一次迭代提供输入变量的值,并返回最终迭代产生的输出变量的值。3) Scan_output 变量用于隐式地连接所有迭代中计算的值。在上面的示例中,在所有迭代中计算的用户定义值(user_defined_val)将连接起来,并在循环后作为 user_defined_vals 的值返回。4) 在主体中创建的值不能在封闭作用域中访问,除非使用上述机制。

请注意,此操作符的语义支持“对角线”或“波前”执行。(参见此处的步骤 3 以获取示例:https://devblogs.nvidia.com/optimizing-recurrent-neural-networks-cudnn-5/)。前端应将多层 RNN 发出为一系列 While 操作符(时间作为内部循环维度),每个连续层消耗前一层的 scan_outputs,可能经过几个逐点操作符(例如,dropout、残差连接、线性层)。

子图(由 loop 节点生成)的输入/输出匹配基于顺序而不是名称。实现将根据此顺序找出名称。

特性: AlwaysSpeculatableImplTrait

接口:ConditionallySpeculatable, HasOnnxSubgraphOpInterface, NoMemoryEffect (MemoryEffectOpInterface), ResultTypeInferenceOpInterface, ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
M 64位无符号整数值张量或None类型
cond 1位无符号整数值张量或None类型
v_initial 8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或bfloat16类型值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或字符串类型值张量,或1位无符号整数值张量,或带32位浮点元素的复数类型值张量,或带64位浮点元素的复数类型值张量,或f8E4M3FN类型值张量,或f8E4M3FNUZ类型值张量,或f8E5M2类型值张量,或f8E5M2FNUZ类型值张量,或4位无符号整数值张量,或4位无符号整数值张量,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或bfloat16类型值张量的SeqType,或16位浮点值张量的SeqType,或32位浮点值张量的SeqType,或64位浮点值张量的SeqType,或字符串类型值张量的SeqType,或1位无符号整数值张量的SeqType,或带32位浮点元素的复数类型值张量的SeqType,或带64位浮点元素的复数类型值张量的SeqType,或f8E4M3FN类型值张量的SeqType,或f8E4M3FNUZ类型值张量的SeqType,或f8E5M2类型值张量的SeqType,或f8E5M2FNUZ类型值张量的SeqType,或4位无符号整数值张量的SeqType,或4位无符号整数值张量的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或bfloat16类型值张量OptType的SeqType,或16位浮点值张量OptType的SeqType,或32位浮点值张量OptType的SeqType,或64位浮点值张量OptType的SeqType,或字符串类型值张量OptType的SeqType,或1位无符号整数值张量OptType的SeqType,或带32位浮点元素的复数类型值张量OptType的SeqType,或带64位浮点元素的复数类型值张量OptType的SeqType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或bfloat16类型值张量OptType,或16位浮点值张量OptType,或32位浮点值张量OptType,或64位浮点值张量OptType,或字符串类型值张量OptType,或1位无符号整数值张量OptType,或带32位浮点元素的复数类型值张量OptType,或带64位浮点元素的复数类型值张量OptType,或f8E4M3FN类型值张量OptType,或f8E4M3FNUZ类型值张量OptType,或f8E5M2类型值张量OptType,或f8E5M2FNUZ类型值张量OptType,或4位无符号整数值张量OptType,或4位无符号整数值张量OptType

结果

结果 描述
v_final_and_scan_outputs 8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或bfloat16类型值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或字符串类型值张量,或1位无符号整数值张量,或带32位浮点元素的复数类型值张量,或带64位浮点元素的复数类型值张量,或f8E4M3FN类型值张量,或f8E4M3FNUZ类型值张量,或f8E5M2类型值张量,或f8E5M2FNUZ类型值张量,或4位无符号整数值张量,或4位无符号整数值张量,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或bfloat16类型值张量的SeqType,或16位浮点值张量的SeqType,或32位浮点值张量的SeqType,或64位浮点值张量的SeqType,或字符串类型值张量的SeqType,或1位无符号整数值张量的SeqType,或带32位浮点元素的复数类型值张量的SeqType,或带64位浮点元素的复数类型值张量的SeqType,或f8E4M3FN类型值张量的SeqType,或f8E4M3FNUZ类型值张量的SeqType,或f8E5M2类型值张量的SeqType,或f8E5M2FNUZ类型值张量的SeqType,或4位无符号整数值张量的SeqType,或4位无符号整数值张量的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或bfloat16类型值张量OptType的SeqType,或16位浮点值张量OptType的SeqType,或32位浮点值张量OptType的SeqType,或64位浮点值张量OptType的SeqType,或字符串类型值张量OptType的SeqType,或1位无符号整数值张量OptType的SeqType,或带32位浮点元素的复数类型值张量OptType的SeqType,或带64位浮点元素的复数类型值张量OptType的SeqType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或bfloat16类型值张量OptType,或16位浮点值张量OptType,或32位浮点值张量OptType,或64位浮点值张量OptType,或字符串类型值张量OptType,或1位无符号整数值张量OptType,或带32位浮点元素的复数类型值张量OptType,或带64位浮点元素的复数类型值张量OptType,或f8E4M3FN类型值张量OptType,或f8E4M3FNUZ类型值张量OptType,或f8E5M2类型值张量OptType,或f8E5M2FNUZ类型值张量OptType,或4位无符号整数值张量OptType,或4位无符号整数值张量OptType

onnx.LpNormalization (ONNXLpNormalizationOp)

ONNX LpNormalization 操作

给定一个矩阵,沿提供的轴应用 Lp 归一化。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
p::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.LpPool (ONNXLpPoolOp)

ONNX LpPool 操作

LpPool 接收一个输入张量 X,并根据核大小、步幅和填充长度在张量上应用 Lp 池化。Lp 池化包括根据核大小计算输入张量子集上所有值的 Lp 范数,并将数据下采样到输出张量 Y 中以进行进一步处理。输出空间形状将如下所示:

 output_spatial_shape[i] = floor((input_spatial_shape[i] + pad_shape[i] - {kernelSpatialShape}) / strides_spatial_shape[i] + 1)

 output_spatial_shape[i] = ceil((input_spatial_shape[i] + pad_shape[i] - {kernelSpatialShape}) / strides_spatial_shape[i] + 1)

如果启用了 ceil_mode,则 pad_shape[i] 是沿轴 i 的填充之和。

auto_pad 是一个已弃用的属性。如果当前正在使用它们,则输出空间形状将如下所示:

 VALID: output_spatial_shape[i] = ceil((input_spatial_shape[i] - {kernelSpatialShape} + 1) / strides_spatial_shape[i])
 SAME_UPPER or SAME_LOWER: output_spatial_shape[i] = ceil(input_spatial_shape[i] / strides_spatial_shape[i])

如果 SAME_UPPERSAME_LOWER,则填充形状将遵循

 pad_shape[i] = (output_spatial_shape[i] - 1) * strides_spatial_shape[i] + {kernelSpatialShape} - input_spatial_shape[i]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
auto_pad::mlir::StringAttr字符串属性
ceil_mode::mlir::IntegerAttr64位有符号整数属性
dilations::mlir::ArrayAttr64位整数数组属性
kernel_shape::mlir::ArrayAttr64位整数数组属性
p::mlir::IntegerAttr64位有符号整数属性
pads::mlir::ArrayAttr64位整数数组属性
strides::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.MatMulInteger (ONNXMatMulIntegerOp)

ONNX MatMulInteger 操作

矩阵乘法,其行为类似于 numpy.matmul。乘积绝对不能溢出。累加可能溢出,仅当使用 32 位时。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 8位无符号整数值张量或8位无符号整数值张量
B 8位无符号整数值张量或8位无符号整数值张量
a_zero_point 8位无符号整数值张量或8位无符号整数值张量或None类型
b_zero_point 8位无符号整数值张量或8位无符号整数值张量或None类型

结果

结果 描述
Y 32位无符号整数值张量

onnx.MatMul (ONNXMatMulOp)

ONNX MatMul 操作

矩阵乘法,其行为类似于 numpy.matmul

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或32位无符号整数值张量,或64位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或bfloat16类型值张量
B 16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或32位无符号整数值张量,或64位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或bfloat16类型值张量

结果

结果 描述
Y 16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或32位无符号整数值张量,或64位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或bfloat16类型值张量

onnx.Max (ONNXMaxOp)

ONNX Max 操作

输入张量逐元素的 are_max(支持 Numpy 风格的广播)。所有输入和输出必须具有相同的数据类型。此操作符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
data_0 8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或bfloat16类型值张量

结果

结果 描述
max 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.MaxPool (ONNXMaxPoolOp)

ONNX MaxPool 操作

MaxPool 接收一个输入张量 X,并根据核大小、步幅和填充长度在张量上应用最大池化。最大池化包括根据核大小计算输入张量子集上所有值的最大值,并将数据下采样到输出张量 Y 中以进行进一步处理。输出空间形状的计算方式不同,取决于是否使用显式填充(应用 pads)或自动填充(使用 auto_pad)。使用显式填充(https://pytorch.ac.cn/docs/stable/generated/torch.nn.MaxPool2d.html?highlight=maxpool#torch.nn.MaxPool2d)

 output_spatial_shape[i] = floor((input_spatial_shape[i] + pad_shape[i] - dilation[i] * (kernel_shape[i] - 1) - 1) / strides_spatial_shape[i] + 1)

 output_spatial_shape[i] = ceil((input_spatial_shape[i] + pad_shape[i] - dilation[i] * (kernel_shape[i] - 1) - 1) / strides_spatial_shape[i] + 1)

ceil_mode 启用时,pad_shape[i] 是沿轴 i 的填充之和。在右填充区域开始的滑动窗口将被忽略。

auto_pad 是一个已弃用的属性。如果您当前正在使用它,当 ceil_mode 启用时,输出的空间形状将遵循

 VALID: output_spatial_shape[i] = ceil((input_spatial_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1) + 1) / strides_spatial_shape[i])
 SAME_UPPER or SAME_LOWER: output_spatial_shape[i] = ceil(input_spatial_shape[i] / strides_spatial_shape[i])

或当 ceil_mode 禁用时(https://tensorflowcn.cn/api_docs/python/tf/keras/layers/AveragePooling2D)

 VALID: output_spatial_shape[i] = floor((input_spatial_shape[i] - ((kernel_spatial_shape[i] - 1) * dilations[i] + 1)) / strides_spatial_shape[i]) + 1
 SAME_UPPER or SAME_LOWER: output_spatial_shape[i] = floor((input_spatial_shape[i] - 1) / strides_spatial_shape[i]) + 1

如果 SAME_UPPERSAME_LOWER,则填充形状将遵循

 pad_shape[i] = (output_spatial_shape[i] - 1) * strides_spatial_shape[i] + ((kernel_spatial_shape[i] - 1) * dilations[i] + 1) - input_spatial_shape[i]

每个池化窗口的输出是排除填充的最大元素数量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
auto_pad::mlir::StringAttr字符串属性
ceil_mode::mlir::IntegerAttr64位有符号整数属性
dilations::mlir::ArrayAttr64位整数数组属性
kernel_shape::mlir::ArrayAttr64位整数数组属性
pads::mlir::ArrayAttr64位整数数组属性
storage_order::mlir::IntegerAttr64位有符号整数属性
strides::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
X bfloat16类型值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或8位无符号整数值张量,或8位无符号整数值张量

结果

结果 描述
Y bfloat16类型值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或8位无符号整数值张量,或8位无符号整数值张量
Indices 64位无符号整数值张量或None类型

onnx.MaxPoolSingleOut (ONNXMaxPoolSingleOutOp)

具有单个输出的 ONNX MaxPool 操作。

具有单个输出的 ONNX MaxPool 操作。有关 MaxPool 语义的完整描述,请参阅 ONNXMaxPoolOp。

此操作不是标准的一部分,已添加以协助 onnx-mlir。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
auto_pad::mlir::StringAttr字符串属性
ceil_mode::mlir::IntegerAttr64位有符号整数属性
dilations::mlir::ArrayAttr64位整数数组属性
kernel_shape::mlir::ArrayAttr64位整数数组属性
pads::mlir::ArrayAttr64位整数数组属性
storage_order::mlir::IntegerAttr64位有符号整数属性
strides::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
X 任何类型值的 memref 或任何类型值的张量

结果

结果 描述
o_Y 任何类型值的 memref 或任何类型值的张量

onnx.MaxRoiPool (ONNXMaxRoiPoolOp)

ONNX MaxRoiPool 操作

ROI max pool 接收一个输入张量 X 和感兴趣区域 (RoIs),对每个 RoI 应用最大池化,以生成形状为 (num_rois, channels, pooled_shape[0], pooled_shape[1]) 的 4D 输出张量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
pooled_shape::mlir::ArrayAttr64位整数数组属性
spatial_scale::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
rois bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.MaxUnpool (ONNXMaxUnpoolOp)

ONNX MaxUnpool 操作

MaxUnpool 基本上计算 MaxPool 操作符的部分逆。此操作符的输入信息通常是 MaxPool 操作符的输出信息。第一个输入张量 X 是需要进行反池化的张量,通常是 MaxPool 的池化张量(第一个输出)。第二个输入张量 I 包含与第一个输入张量 X 中的元素对应的(局部最大)元素的索引。输入张量 I 通常是 MaxPool 操作符的第二个输出。第三个(可选)输入是指定反池化操作输出大小的张量。

MaxUnpool 旨在执行 MaxPool 操作符的“部分”逆。之所以称为“部分”,是因为 MaxUnpool 操作符输出中的所有非最大值都设置为零。对反池化操作的原始输入进行池化应该会得到反池化操作符的原始输入。

MaxUnpool 可以为几个输入大小产生相同的输出大小,这使得反池化操作符变得模棱两可。第三个输入参数 output_size 用于消除操作符的歧义并生成已知/可预测大小的输出张量。

除了输入之外,MaxUnpool 还接受三个属性,即 kernel_shape、strides 和 pads,它们定义了精确的反池化操作。这些属性通常与反池化操作符试图反转的相应池化操作符具有相同的值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
kernel_shape::mlir::ArrayAttr64位整数数组属性
pads::mlir::ArrayAttr64位整数数组属性
strides::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
I 64位无符号整数值张量
output_shape 64位无符号整数值张量或None类型

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Mean (ONNXMeanOp)

ONNX Mean 操作

输入张量逐元素的均值(支持 Numpy 风格的广播)。所有输入和输出必须具有相同的数据类型。此操作符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
data_0 16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或bfloat16类型值张量

结果

结果 描述
mean 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.MeanVarianceNormalization (ONNXMeanVarianceNormalizationOp)

ONNX MeanVarianceNormalization 操作

均值方差归一化函数:使用公式 (X-EX)/sqrt(E(X-EX)^2) 对输入张量 X 执行均值方差归一化。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
X 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
Y 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.MelWeightMatrix (ONNXMelWeightMatrixOp)

ONNX MelWeightMatrix 操作

生成一个 MelWeightMatrix,该矩阵可用于将包含线性采样频率频谱(来自 DFT 或 STFT)的张量重新加权为基于 mel 尺度上的 [lower_edge_hertz, upper_edge_hertz] 范围的 num_mel_bins 频率信息。此函数根据以下公式定义以赫兹为单位的频率的 mel 尺度:

mel(f) = 2595 * log10(1 + f/700)

在返回的矩阵中,所有三角形(滤波器组)的最大值为 1.0。

返回的 MelWeightMatrix 可用于右乘一个形状为 [frames, num_spectrogram_bins] 的频谱 S(例如 STFT 幅度)来生成一个形状为 [frames, num_mel_bins] 的“mel 频谱”M。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
output_datatype::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
num_mel_bins 32位无符号整数值张量或64位无符号整数值张量
dft_length 32位无符号整数值张量或64位无符号整数值张量
sample_rate 32位无符号整数值张量或64位无符号整数值张量
lower_edge_hertz 32位浮点值张量,或16位浮点值张量,或64位浮点值张量,或bfloat16类型值张量
upper_edge_hertz 32位浮点值张量,或16位浮点值张量,或64位浮点值张量,或bfloat16类型值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Min (ONNXMinOp)

ONNX Min 操作

输入张量逐元素的 are_min(支持 Numpy 风格的广播)。所有输入和输出必须具有相同的数据类型。此操作符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
data_0 8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或bfloat16类型值张量

结果

结果 描述
min 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Mish (ONNXMishOp)

ONNX Mish 操作

Mish:一种自正则化非单调神经激活函数。

使用以下公式对输入张量 X 逐元素执行线性单元:

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

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Mod (ONNXModOp)

ONNX Mod 操作

逐元素执行二进制模运算(支持 Numpy 风格的广播)。余数的符号与除数的符号相同。

Mod 操作符也可以像 C 的 fmod() 或 numpy.fmod 一样工作。在这种情况下,余数的符号将与被除数相同(与整数模运算相反)。为了强制像 numpy.fmod() 这样的行为,提供了一个 'fmod' 属性。此属性默认为 0,导致行为类似于整数模运算。将其设置为 1 会使余数计算方式类似于 numpy.fmod()。

如果输入类型是浮点数,则必须将 fmod 属性设置为 1。

当被除数为零时,结果将取决于平台。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
fmod::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
A 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
B 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
C 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Momentum (ONNXMomentumOp)

ONNX Momentum 操作

计算带有动量的随机梯度更新的一个迭代。此操作符可以执行多个张量变量的优化。

Let's define the behavior of this operator. As you can imagine, SG with momentum requires
several parameters:

 - The learning-rate \"R\".
 - The update count \"T\". That is, the number of conducted training iterations. It should
   be zero in the first training iteration.
 - A L2-norm regularization coefficient \"norm_coefficient\".
 - A decay coefficient of previous accumulated gradient (i.e., momentum) \"alpha\".
 - The scaling coefficient of current gradient \"beta\".
 - An attribute to choose either standard momentum or Nesterov's momentum \"mode\" should
   be used.

For the sake of simplicity, assume that there is only one tensor (called \"X\") to be optimized.
Other necessary inputs are \"X\"'s gradient (called \"G\") and \"X\"'s momentum (called \"V\"). This
Momentum operator maps all these inputs to the new value of \"X\" (called \"X_new\") and its new
momentum (called \"V_new\").

This operator supports two different momentum algorithms. Set the attribute \"mode\" to
\"nesterov\" if Nesterov's momentum is desired. Otherwise, set the attribute \"model\" to
\"standard\" to use standard momentum. Computation details are described subsequently.

Let \"+\", \"-\", \"*\", and \"/\" are all element-wise operations with numpy-style broadcasting.

Pseudo code for SG with standard momentum:

  // Add gradient of 0.5 * norm_coefficient * ||X||^2, where ||X|| is the sum of squared
  // values of all elements in X.
  G_regularized = norm_coefficient * X + G

  // In the first training iteration, beta should always be 1.
  beta_adjusted = T > 0 ? beta : 1

  // Compute the current momentum based on previous momentum and the current gradient.
  V_new = alpha * V + beta_adjusted * G_regularized

  // Update X.
  X_new = X - R * V_new

Pseudo code for SG with Nesterov's momentum:

  // Add gradient of 0.5 * norm_coefficient * ||X||^2, where ||X|| is the sum of squared
  // values of all elements in X.
  G_regularized = norm_coefficient * X + G;

  // In the first training iteration, beta should always be 1.
  beta_adjusted = T > 0 ? beta : 1

  // Compute the current momentum based on previous momentum and the current gradient.
  V_new = alpha * V + beta_adjusted * G_regularized;

  // Compute final update direction and then update X.
  X_new = X - R * (G_regularized + alpha * V_new)

If one assign this operators to optimize multiple inputs, for example, \"X_1\" and \"X_2\". The same
pseudo code would be extended to handle all tensors jointly. More specifically, we can view \"X\" as a
concatenation of \"X_1\" and \"X_2\" (of course, their gradient and accumulate gradient should
be concatenated too) and then our pseudo code becomes applicable.

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
alpha::mlir::FloatAttr32位浮点属性
beta::mlir::FloatAttr32位浮点属性
mode::mlir::StringAttr字符串属性
norm_coefficient::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
R 32位浮点值张量或64位浮点值张量
T 64位无符号整数值张量
inputs 32位浮点值张量或64位浮点值张量的可变参数

结果

结果 描述
outputs 32位浮点值张量或64位浮点值张量的可变参数

onnx.Mul (ONNXMulOp)

ONNX Mul 操作

逐元素执行二进制乘法(支持 Numpy 风格的广播)。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

(Opset 14 更改):扩展支持的类型以包括 uint8、int8、uint16 和 int16。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
B 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
C 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Multinomial (ONNXMultinomialOp)

ONNX Multinomial 操作

根据每个可能结果的概率生成一个多项分布样本张量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
dtype::mlir::IntegerAttr64位有符号整数属性
sample_size::mlir::IntegerAttr64位有符号整数属性
seed::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 32位无符号整数值张量或64位无符号整数值张量

onnx.Neg (ONNXNegOp)

ONNX Neg 操作

Neg 接收一个输入数据(张量) 并生成一个输出数据 (张量),其中每个元素的符号被翻转,y = -x,被逐元素应用于张量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X 32位浮点值张量,或32位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或64位无符号整数值张量,或16位浮点值张量,或64位浮点值张量,或bfloat16类型值张量

结果

结果 描述
Y 32位浮点值张量,或32位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或64位无符号整数值张量,或16位浮点值张量,或64位浮点值张量,或bfloat16类型值张量

onnx.NegativeLogLikelihoodLoss (ONNXNegativeLogLikelihoodLossOp)

ONNX NegativeLogLikelihoodLoss 操作

负对数似然损失操作符计算(加权的)负对数似然损失。其“input”张量的形状为 (N, C, d1, d2, …, dk),其中 k >= 0。 “input”张量包含输入[n, :, d_1, d_2,…, d_k]属于类 [0, C) 的对数概率。操作符的“target”输入张量的形状为 (N, d1, d2, …, dk)。它编码类别标签(C 个类别中的一个)或可能包含一个特殊值(由属性 ignore_index 指示)来表示 N x d1 x d2 x … x dk 个样本。将输入[n, :, d_1, d_2,…d_k]分类为类别 c = target[n][d_1][d_2]…[d_k] 的损失计算如下:

loss[n][d_1][d_2]...[d_k] = -input[n][c][d_1][d_2]...[d_k].

当提供可选的“weight”时,样本损失计算如下:

loss[n][d_1][d_2]...[d_k] = -input[n][c][d_1][d_2]...[d_k] * weight[c].

当 target-value 等于 ignore_index 时,损失为零。

loss[n][d_1][d_2]...[d_k] = 0, when target[n][d_1][d_2]...[d_k] = ignore_index

如果“reduction”属性设置为“none”,则操作符的输出将是上述形状为 (N, d1, d2, …, dk) 的损失。如果“reduction”属性设置为“mean”(默认属性值),则输出损失为(加权)平均值:

mean(loss), if \"weight\" is not provided,

或者如果提供了权重:

sum(loss) / sum(weight[target[n][d_1][d_2]...[d_k]]]), for all samples.

如果“reduction”属性设置为“sum”,则输出为标量:sum(loss)

另请参阅 https://pytorch.ac.cn/docs/stable/nn.html#torch.nn.NLLLoss。

示例 1

// negative log likelihood loss, \"none\" reduction
N, C, d1 = 2, 3, 2
input = [[[1.0, 2.0], [2.0, 2.0], [3.0, 2.0]],
          [[0.0, 1.0], [2.0, 2.0], [1.0, 2]]]
target = [[2, 1], [0, 2]]

loss = np.zeros((N, d1))
for n in range(N):
    for d_1 in range(d1):
        c = target[n][d_1]
        loss[n][d_1] = -input[n][c][d_1]

// print(loss)
// [[-3. -2.]
//  [-0. -2.]]

示例 2

// weighted negative log likelihood loss, sum reduction
N, C, d1 = 2, 3, 2
input = [[[1.0, 2.0], [2.0, 2.0], [3.0, 2.0]],
        [[0.0, 1.0], [2.0, 2.0], [1.0, 2]]]
target = [[2, 1], [0, 2]]
weight = [0.2, 0.3, 0.1]
loss = np.zeros((N, d1))
for n in range(N):
    for d_1 in range(d1):
        c = target[n][d_1]
        loss[n][d_1] = -input[n][c][d_1] * weight[c]

loss = np.sum(loss)
// print(loss)
// -1.1

示例 3

// weighted negative log likelihood loss, mean reduction
N, C, d1 = 2, 3, 2
input = [[[1.0, 2.0], [2.0, 2.0], [3.0, 2.0]],
        [[0.0, 1.0], [2.0, 2.0], [1.0, 2]]]
target = [[2, 1], [0, 2]]
weight = [0.2, 0.3, 0.1]
loss = np.zeros((N, d1))
weight_total = 0
for n in range(N):
    for d_1 in range(d1):
        c = target[n][d_1]
        loss[n][d_1] = -input[n][c][d_1] * weight[c]
        weight_total = weight_total + weight[c]

loss = np.sum(loss) / weight_total
// print(loss)
// -1.57

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
ignore_index::mlir::IntegerAttr64位有符号整数属性
reduction::mlir::StringAttr字符串属性

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
target 32位无符号整数值张量或64位无符号整数值张量
weight bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型

结果

结果 描述
loss bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.NonMaxSuppression (ONNXNonMaxSuppressionOp)

ONNX NonMaxSuppression 操作

过滤掉与先前选定框具有高交并比 (IOU) 重叠的框。得分低于 score_threshold 的边界框将被删除。边界框格式由属性 center_point_box 指示。请注意,该算法对坐标系的原点位置不敏感,并且普遍对坐标系的正交变换和翻译具有不变性;因此,坐标系的平移或反射会导致算法选择相同的框。selected_indices 输出是一组索引,指向输入边界框集合,表示选定的框。可以使用 Gather 或 GatherND 操作符获取与选定索引对应的边界框坐标。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
center_point_box::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
boxes 32位浮点值张量
scores 32位浮点值张量
max_output_boxes_per_class 64位无符号整数值张量或None类型
iou_threshold 32位浮点值张量,或None类型
score_threshold 32位浮点值张量,或None类型

结果

结果 描述
selected_indices 64位无符号整数值张量

onnx.NonZero (ONNXNonZeroOp)

ONNX NonZero 操作

以行主序(按维度)返回非零元素的索引。NonZero 的行为类似于 numpy.nonzero:https://docs.scipy.org.cn/doc/numpy/reference/generated/numpy.nonzero.html,但对于标量输入,NonZero 的输出形状为 (0, N),而不是 (1, N),这与 Numpy 的行为不同。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
Y 64位无符号整数值张量

onnx.NoValue (ONNXNoneOp)

表示值缺失的操作。

此操作符可用于表示值缺失。它通常用作具有可选参数的操作符的参数。

示例

  %cst = "onnx.NoValue"() {value} : () -> none
  %0, %1 = "onnx.Split"(%arg0, %cst) { axis=1 : si64 } : (tensor<?xf32>, none) -> (tensor<*xf32>, tensor<*xf32>)

此操作不是标准的一部分,已添加以协助 onnx-mlir。

特性: AlwaysSpeculatableImplTrait, ConstantLike

接口:ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
value::mlir::UnitAttrunit 属性

结果

结果 描述
none_val None 类型

onnx.Normalizer (ONNXNormalizerOp)

ONNX Normalizer 操作

归一化输入。有三种归一化模式,具有相应的公式,使用逐元素中缀运算符“/”和“^”以及张量级函数“max”和“sum”定义:

Max:Y = X / max(X)
L1:Y = X / sum(X)
L2:Y = sqrt(X^2 / sum(X^2)}
在所有模式下,如果除数为零,则 Y == X。
对于批次(例如,[N,C] 张量),沿 C 轴进行归一化。换句话说,批次的每一行独立归一化。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
norm::mlir::StringAttr字符串属性

操作数

操作数 描述
X 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量

结果

结果 描述
Y 32位浮点值张量

onnx.Not (ONNXNotOp)

ONNX Not 操作

逐元素返回输入张量的否定。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X 1位无符号整数值张量

结果

结果 描述
Y 1位无符号整数值张量

onnx.OneHotEncoder (ONNXOneHotEncoderOp)

ONNX OneHotEncoder 操作

将每个输入元素替换为一个由 1 和 0 组成的数组,其中一个 1 放置在传入类别索引的位置。总类别数将决定输出数组 Y 的附加维度的大小。
例如,如果我们传入一个值为 4 的张量,类别数为 8,则输出将是一个张量 [0,0,0,0,1,0,0,0]
此操作符假定每个输入特征来自相同的类别集。
如果输入是浮点数、int32 或双精度张量,数据将被转换为整数,并将使用 cats_int64s 类别列表进行查找。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
cats_int64s::mlir::ArrayAttr64位整数数组属性
cats_strings::mlir::ArrayAttr字符串数组属性
zeros::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X 字符串类型值张量,或64位无符号整数值张量,或32位无符号整数值张量,或32位浮点值张量,或64位浮点值张量

结果

结果 描述
Y 32位浮点值张量

onnx.OneHot (ONNXOneHotOp)

ONNX OneHot 操作

根据输入生成一个 one-hot 张量。索引输入张量中的索引值所代表的位置将具有“on_value”,而其他位置将在输出张量中具有“off_value”,“on_value”和“off_value”作为必需的输入参数“values”的一部分指定,它是一个包含 [off_value, on_value] 格式的两个元素的张量。输出张量的秩将比输入张量的秩大一。附加维度用于 one-hot 表示。附加维度将插入到“axis”指定的��置。如果未指定“axis”,则附加维度将作为最内层维度插入,即 axis=-1。附加维度的��由必需的标量输入“depth”指定。输出张量的类型与“values”输入张量的类型相同。索引输入张量中的任何条目,其值超出范围 [-depth, depth-1] 的,都将导致输出张量中所有“off_value”值的 one-hot 表示。

when axis = 0:
output[input[i, j, k], i, j, k] = 1 for all i, j, k and 0 otherwise.

when axis = -1:
output[i, j, k, input[i, j, k]] = 1 for all i, j, k and 0 otherwise.

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
indices 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
depth 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
values 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.OptionalGetElement (ONNXOptionalGetElementOp)

ONNX OptionalGetElement 操作

如果输入是张量或序列类型,则返回输入。如果输入是可选类型,则输出输入中的元素。如果输入是空可选类型(即没有元素),则会出错,在这种情况下行为未定义。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 OptType of SeqType of tensor of 8-bit unsigned integer values values values or OptType of SeqType of tensor of 16-bit unsigned integer values values values or OptType of SeqType of tensor of 32-bit unsigned integer values values values or OptType of SeqType of tensor of 64-bit unsigned integer values values values or OptType of SeqType of tensor of 8-bit unsigned integer values values values or OptType of SeqType of tensor of 16-bit unsigned integer values values values or OptType of SeqType of tensor of 32-bit unsigned integer values values values or OptType of SeqType of tensor of 64-bit unsigned integer values values values or OptType of SeqType of tensor of 16-bit float values values values or OptType of SeqType of tensor of 32-bit float values values values or OptType of SeqType of tensor of 64-bit float values values values or OptType of SeqType of tensor of string type values values values or OptType of SeqType of tensor of 1-bit unsigned integer values values values or OptType of SeqType of tensor of complex type with 32-bit float elements values values values or OptType of SeqType of tensor of complex type with 64-bit float elements values values values or OptType of tensor of 8-bit unsigned integer values values or OptType of tensor of 16-bit unsigned integer values values or OptType of tensor of 32-bit unsigned integer values values or OptType of tensor of 64-bit unsigned integer values values or OptType of tensor of 8-bit unsigned integer values values or OptType of tensor of 16-bit unsigned integer values values or OptType of tensor of 32-bit unsigned integer values values or OptType of tensor of 64-bit unsigned integer values values or OptType of tensor of 16-bit float values values or OptType of tensor of 32-bit float values values or OptType of tensor of 64-bit float values values or OptType of tensor of string type values values or OptType of tensor of 1-bit unsigned integer values values or OptType of tensor of complex type with 32-bit float elements values values or OptType of tensor of complex type with 64-bit float elements values values or tensor of 8-bit unsigned integer values or tensor of 16-bit unsigned integer values or tensor of 32-bit unsigned integer values or tensor of 64-bit unsigned integer values or tensor of 8-bit unsigned integer values or tensor of 16-bit unsigned integer values or tensor of 32-bit unsigned integer values or tensor of 64-bit unsigned integer values or tensor of 16-bit float values or tensor of 32-bit float values or tensor of 64-bit float values or tensor of string type values or tensor of 1-bit unsigned integer values or tensor of complex type with 32-bit float elements values or tensor of complex type with 64-bit float elements values or SeqType of tensor of 8-bit unsigned integer values values or SeqType of tensor of 16-bit unsigned integer values values or SeqType of tensor of 32-bit unsigned integer values values or SeqType of tensor of 64-bit unsigned integer values values or SeqType of tensor of 8-bit unsigned integer values values or SeqType of tensor of 16-bit unsigned integer values values or SeqType of tensor of 32-bit unsigned integer values values or SeqType of tensor of 64-bit unsigned integer values values or SeqType of tensor of 16-bit float values values or SeqType of tensor of 32-bit float values values or SeqType of tensor of 64-bit float values values or SeqType of tensor of string type values values or SeqType of tensor of 1-bit unsigned integer values values or SeqType of tensor of complex type with 32-bit float elements values values or SeqType of tensor of complex type with 64-bit float elements values values

结果

结果 描述
输出 8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、字符串类型值张量、1位无符号整数值张量、32位浮点数元素复数类型值张量、64位浮点数元素复数类型值张量、8位无符号整数值序列类型张量、16位无符号整数值序列类型张量、32位无符号整数值序列类型张量、64位无符号整数值序列类型张量、8位无符号整数值序列类型张量、16位无符号整数值序列类型张量、32位无符号整数值序列类型张量、64位无符号整数值序列类型张量、16位浮点数值序列类型张量、32位浮点数值序列类型张量、64位浮点数值序列类型张量、字符串类型值序列类型张量、1位无符号整数值序列类型张量、32位浮点数元素复数类型值序列类型张量、64位浮点数元素复数类型值序列类型张量

onnx.OptionalHasElement (ONNXOptionalHasElementOp)

ONNX OptionalHasElement 操作

当输入是可选类型且包含一个元素,或者输入是张量或序列类型时,返回true。如果输入未提供或为空可选类型,则此操作返回false。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 8位无符号整数值序列类型可选类型值、16位无符号整数值序列类型可选类型值、32位无符号整数值序列类型可选类型值、64位无符号整数值序列类型可选类型值、8位无符号整数值序列类型可选类型值、16位无符号整数值序列类型可选类型值、32位无符号整数值序列类型可选类型值、64位无符号整数值序列类型可选类型值、16位浮点数值序列类型可选类型值、32位浮点数值序列类型可选类型值、64位浮点数值序列类型可选类型值、字符串类型值序列类型可选类型值、1位无符号整数值序列类型可选类型值、32位浮点数元素复数类型值序列类型可选类型值、64位浮点数元素复数类型值序列类型可选类型值、8位无符号整数值可选类型值、16位无符号整数值可选类型值、32位无符号整数值可选类型值、64位无符号整数值可选类型值、8位无符号整数值可选类型值、16位无符号整数值可选类型值、32位无符号整数值可选类型值、64位无符号整数值可选类型值、16位浮点数值可选类型值、32位浮点数值可选类型值、64位浮点数值可选类型值、字符串类型值可选类型值、1位无符号整数值可选类型值、32位浮点数元素复数类型值可选类型值、64位浮点数元素复数类型值可选类型值、8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、字符串类型值张量、1位无符号整数值张量、32位浮点数元素复数类型值张量、64位浮点数元素复数类型值张量、8位无符号整数值序列类型张量、16位无符号整数值序列类型张量、32位无符号整数值序列类型张量、64位无符号整数值序列类型张量、8位无符号整数值序列类型张量、16位无符号整数值序列类型张量、32位无符号整数值序列类型张量、64位无符号整数值序列类型张量、16位浮点数值序列类型张量、32位浮点数值序列类型张量、64位浮点数值序列类型张量、字符串类型值序列类型张量、1位无符号整数值序列类型张量、32位浮点数元素复数类型值序列类型张量、64位浮点数元素复数类型值序列类型张量、空类型

结果

结果 描述
输出 1位无符号整数值张量

onnx.Optional (ONNXOptionalOp)

ONNX Optional 操作

构造一个可选类型的值,其中包含指定类型的空可选值,或者包含输入元素的非空值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
类型::mlir::TypeAttr任何类型属性

操作数

操作数 描述
输入 8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、字符串类型值张量、1位无符号整数值张量、32位浮点数元素复数类型值张量、64位浮点数元素复数类型值张量、8位无符号整数值序列类型张量、16位无符号整数值序列类型张量、32位无符号整数值序列类型张量、64位无符号整数值序列类型张量、8位无符号整数值序列类型张量、16位无符号整数值序列类型张量、32位无符号整数值序列类型张量、64位无符号整数值序列类型张量、16位浮点数值序列类型张量、32位浮点数值序列类型张量、64位浮点数值序列类型张量、字符串类型值序列类型张量、1位无符号整数值序列类型张量、32位浮点数元素复数类型值序列类型张量、64位浮点数元素复数类型值序列类型张量、空类型

结果

结果 描述
输出 8位无符号整数值序列类型可选类型值、16位无符号整数值序列类型可选类型值、32位无符号整数值序列类型可选类型值、64位无符号整数值序列类型可选类型值、8位无符号整数值序列类型可选类型值、16位无符号整数值序列类型可选类型值、32位无符号整数值序列类型可选类型值、64位无符号整数值序列类型可选类型值、16位浮点数值序列类型可选类型值、32位浮点数值序列类型可选类型值、64位浮点数值序列类型可选类型值、字符串类型值序列类型可选类型值、1位无符号整数值序列类型可选类型值、32位浮点数元素复数类型值序列类型可选类型值、64位浮点数元素复数类型值序列类型可选类型值、8位无符号整数值可选类型值、16位无符号整数值可选类型值、32位无符号整数值可选类型值、64位无符号整数值可选类型值、8位无符号整数值可选类型值、16位无符号整数值可选类型值、32位无符号整数值可选类型值、64位无符号整数值可选类型值、16位浮点数值可选类型值、32位浮点数值可选类型值、64位浮点数值可选类型值、字符串类型值可选类型值、1位无符号整数值可选类型值、32位浮点数元素复数类型值可选类型值、64位浮点数元素复数类型值可选类型值

onnx.Or (ONNXOrOp)

ONNX Or 操作

对输入张量 A 和 B 执行逐元素的逻辑 OR 操作,返回结果张量(支持 Numpy 风格的广播)。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 1位无符号整数值张量
B 1位无符号整数值张量

结果

结果 描述
C 1位无符号整数值张量

onnx.PRelu (ONNXPReluOp)

ONNX PRelu 操作

PRelu 接收输入数据(张量)和斜率张量作为输入,并产生一个输出数据(张量),其中函数 `f(x) = slope * x for x < 0`, `f(x) = x for x >= 0` 应用于数据张量元素。此运算符支持 **单向广播**(张量斜率应可单向广播到输入张量 X);更多详情请参阅 [文档](Broadcasting.md)。) 和斜率张量作为输入,并产生一个输出数据(张量)) 其中函数 `f(x) = slope * x for x < 0`, `f(x) = x for x >= 0`。应用于数据张量元素。此运算符支持 **单向广播**(张量斜率应可单向广播到输入张量 X);更多详情请参阅 [文档](Broadcasting.md)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X bfloat16 类型值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量
斜率 bfloat16 类型值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量

结果

结果 描述
Y bfloat16 类型值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量

onnx.Pad (ONNXPadOp)

ONNX Pad 操作

给定一个包含要填充数据的张量(`data`),一个包含轴的起始和结束填充值的张量(`pads`),(可选)一个 `mode`,以及(可选)一个 `constant_value`,生成一个填充后的张量(`output`)。

支持的三个 `modes` 是(类似于 `numpy.pad` 支持的相应模式):

1) `constant`(默认) - 使用指定的 `constant_value` 进行填充(默认为 0、空字符串或 False)

2) `reflect` - 使用沿每个轴镜像向量的反射值进行填充

3) `edge` - 使用数组的边缘值进行填充

4) `wrap` - 环绕填充,就像数据张量形成一个环面一样

示例 1(`constant` 模式)

在第二个维度开始处插入 0 填充。

data = [
    [1.0, 1.2],
    [2.3, 3.4],
    [4.5, 5.7],
]

pads = [0, 2, 0, 0]

mode = 'constant'

constant_value = 0.0

output = [
    [0.0, 0.0, 1.0, 1.2],
    [0.0, 0.0, 2.3, 3.4],
    [0.0, 0.0, 4.5, 5.7],
]

示例 2(`reflect` 模式)

data = [
    [1.0, 1.2],
    [2.3, 3.4],
    [4.5, 5.7],
]

pads = [0, 2, 0, 0]

mode = 'reflect'

output = [
    [1.0, 1.2, 1.0, 1.2],
    [2.3, 3.4, 2.3, 3.4],
    [4.5, 5.7, 4.5, 5.7],
]

示例 3(`edge` 模式)

data = [
    [1.0, 1.2],
    [2.3, 3.4],
    [4.5, 5.7],
]

pads = [0, 2, 0, 0]

mode = 'edge'

output = [
    [1.0, 1.0, 1.0, 1.2],
    [2.3, 2.3, 2.3, 3.4],
    [4.5, 4.5, 4.5, 5.7],
]

示例 4(`wrap` 模式)

data = [
    [1.0, 1.2],
    [2.3, 3.4],
    [4.5, 5.7],
]

pads = [2, 1, 1, 1]

mode = 'wrap'

output = [
    [3.4, 2.3, 3.4, 2.3],
    [5.7, 4.5, 5.7, 4.5],
    [1.2, 1.0, 1.2, 1.0],
    [3.4, 2.3, 3.4, 2.3],
    [5.7, 4.5, 5.7, 4.5],
    [1.2, 1.0, 1.2, 1.0],
]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
mode::mlir::StringAttr字符串属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量
pads 64位无符号整数值张量
常量值 8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、bfloat16 类型值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、字符串类型值张量、1位无符号整数值张量、32位浮点数元素复数类型值张量、64位浮点数元素复数类型值张量、f8E4M3FN 类型值张量、f8E4M3FNUZ 类型值张量、f8E5M2 类型值张量、f8E5M2FNUZ 类型值张量、4位无符号整数值张量、4位无符号整数值张量、空类型
axes 32位无符号整数值张量或64位无符号整数值张量或None类型

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量

onnx.PadV11 (ONNXPadV11Op)

ONNX Pad 操作

给定一个包含要填充数据的张量(`data`),一个包含轴的起始和结束填充值的张量(`pads`),(可选)一个 `mode`,以及(可选)一个 `constant_value`,生成一个填充后的张量(`output`)。

支持的三个 `modes` 是(类似于 `numpy.pad` 支持的相应模式):

1) `constant`(默认) - 使用指定的 `constant_value` 进行填充(默认为 0)

2) `reflect` - 使用沿每个轴镜像向量的反射值进行填充

3) `edge` - 使用数组的边缘值进行填充

示例 1(`constant` 模式):在第二个维度开始处插入 0 填充。

data = [ [1.0, 1.2], [2.3, 3.4], [4.5, 5.7], ]

pads = [0, 2, 0, 0]

mode = ‘constant’

constant_value = 0.0

output = [ [0.0, 0.0, 1.0, 1.2], [0.0, 0.0, 2.3, 3.4], [0.0, 0.0, 4.5, 5.7], ]

示例 2(`reflect` 模式):data = [ [1.0, 1.2], [2.3, 3.4], [4.5, 5.7], ]

pads = [0, 2, 0, 0]

mode = ‘reflect’

output = [ [1.0, 1.2, 1.0, 1.2], [2.3, 3.4, 2.3, 3.4], [4.5, 5.7, 4.5, 5.7], ]

示例 3(`edge` 模式):data = [ [1.0, 1.2], [2.3, 3.4], [4.5, 5.7], ]

pads = [0, 2, 0, 0]

mode = ‘edge’

output = [ [1.0, 1.0, 1.0, 1.2], [2.3, 2.3, 2.3, 3.4], [4.5, 4.5, 4.5, 5.7], ]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
mode::mlir::StringAttr字符串属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
pads 64位无符号整数值张量
常量值 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.PadV13 (ONNXPadV13Op)

ONNX Pad 操作

给定一个包含要填充数据的张量(`data`),一个包含轴的起始和结束填充值的张量(`pads`),(可选)一个 `mode`,以及(可选)一个 `constant_value`,生成一个填充后的张量(`output`)。

支持的三个 `modes` 是(类似于 `numpy.pad` 支持的相应模式):

1) `constant`(默认) - 使用指定的 `constant_value` 进行填充(默认为 0、空字符串或 False)

2) `reflect` - 使用沿每个轴镜像向量的反射值进行填充

3) `edge` - 使用数组的边缘值进行填充

示例 1(`constant` 模式):在第二个维度开始处插入 0 填充。

data = [ [1.0, 1.2], [2.3, 3.4], [4.5, 5.7], ]

pads = [0, 2, 0, 0]

mode = ‘constant’

constant_value = 0.0

output = [ [0.0, 0.0, 1.0, 1.2], [0.0, 0.0, 2.3, 3.4], [0.0, 0.0, 4.5, 5.7], ]

示例 2(`reflect` 模式):data = [ [1.0, 1.2], [2.3, 3.4], [4.5, 5.7], ]

pads = [0, 2, 0, 0]

mode = ‘reflect’

output = [ [1.0, 1.2, 1.0, 1.2], [2.3, 3.4, 2.3, 3.4], [4.5, 5.7, 4.5, 5.7], ]

示例 3(`edge` 模式):data = [ [1.0, 1.2], [2.3, 3.4], [4.5, 5.7], ]

pads = [0, 2, 0, 0]

mode = ‘edge’

output = [ [1.0, 1.0, 1.0, 1.2], [2.3, 2.3, 2.3, 3.4], [4.5, 4.5, 4.5, 5.7], ]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
mode::mlir::StringAttr字符串属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
pads 64位无符号整数值张量
常量值 8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、bfloat16 类型值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、字符串类型值张量、1位无符号整数值张量、32位浮点数元素复数类型值张量、64位浮点数元素复数类型值张量、空类型

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.PadV18 (ONNXPadV18Op)

ONNX Pad 操作

给定一个包含要填充数据的张量(`data`),一个包含轴的起始和结束填充值的张量(`pads`),(可选)一个 `mode`,以及(可选)一个 `constant_value`,生成一个填充后的张量(`output`)。

支持的三个 `modes` 是(类似于 `numpy.pad` 支持的相应模式):

1) `constant`(默认) - 使用指定的 `constant_value` 进行填充(默认为 0、空字符串或 False)

2) `reflect` - 使用沿每个轴镜像向量的反射值进行填充

3) `edge` - 使用数组的边缘值进行填充

示例 1(`constant` 模式)

在第二个维度开始处插入 0 填充。

data = [
    [1.0, 1.2],
    [2.3, 3.4],
    [4.5, 5.7],
]

pads = [0, 2, 0, 0]

mode = 'constant'

constant_value = 0.0

output = [
    [0.0, 0.0, 1.0, 1.2],
    [0.0, 0.0, 2.3, 3.4],
    [0.0, 0.0, 4.5, 5.7],
]

示例 2(`reflect` 模式)

data = [
    [1.0, 1.2],
    [2.3, 3.4],
    [4.5, 5.7],
]

pads = [0, 2, 0, 0]

mode = 'reflect'

output = [
    [1.0, 1.2, 1.0, 1.2],
    [2.3, 3.4, 2.3, 3.4],
    [4.5, 5.7, 4.5, 5.7],
]

示例 3(`edge` 模式)

data = [
    [1.0, 1.2],
    [2.3, 3.4],
    [4.5, 5.7],
]

pads = [0, 2, 0, 0]

mode = 'edge'

output = [
    [1.0, 1.0, 1.0, 1.2],
    [2.3, 2.3, 2.3, 3.4],
    [4.5, 4.5, 4.5, 5.7],
]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
mode::mlir::StringAttr字符串属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
pads 64位无符号整数值张量
常量值 8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、bfloat16 类型值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、字符串类型值张量、1位无符号整数值张量、32位浮点数元素复数类型值张量、64位浮点数元素复数类型值张量、空类型
axes 32位无符号整数值张量或64位无符号整数值张量或None类型

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.PadV2 (ONNXPadV2Op)

ONNX Pad 操作

给定 `data` 张量、填充、模式和值。示例:在第二个维度开始处插入 0 填充。data = [ [1.0, 1.2], [2.3, 3.4], [4.5, 5.7], ] pads = [0, 2, 0, 0] output = [ [ [0.0, 0.0, 1.0, 1.2], [0.0, 0.0, 2.3, 3.4], [0.0, 0.0, 4.5, 5.7], ], ]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
mode::mlir::StringAttr字符串属性
pads::mlir::ArrayAttr64位整数数组属性
value::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
data 16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Pow (ONNXPowOp)

ONNX Pow 操作

Pow 接收输入数据(张量)和指数张量,并产生一个输出数据(张量),其中函数 `f(x) = x^exponent` 应用于数据张量元素。此运算符支持 **多向(即 Numpy 风格)广播**;更多详情请参阅 [文档](Broadcasting.md)。) 和指数张量,并产生一个输出数据(张量)) 其中函数 `f(x) = x^exponent` 应用于数据张量元素。此运算符支持 **多向(即 Numpy 风格)广播**;更多详情请参阅 [文档](Broadcasting.md)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X 32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
Z 32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量

onnx.PrintSignature (ONNXPrintSignatureOp)

ONNX Op 用于打印其输入操作数的类型签名或数据

打印此操作输入操作数的类型签名或数据。参数 op_name 指定一个字符串,在张量之前打印。通常使用 op_name 和 onnx_node_name。此操作被提前引入,以保留原始 ONNX 操作的名称。参数 print_data 控制是否打印张量数据。当 print_data == 1 时,打印张量数据。否则,只打印形状。参数 input 指定要打印的张量。它们可以是 ONNX 操作的输入和输出列表。

此操作不是标准的一部分,已添加以协助 onnx-mlir。

属性

属性MLIR 类型描述
操作名称::mlir::StringAttr字符串属性
打印数据::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 任意类型值张量的变长序列或空类型

onnx.QLinearConv (ONNXQLinearConvOp)

ONNX QLinearConv 操作

卷积运算符消耗一个量化输入张量、其标度(scale)和零点(zero point),一个量化滤波器、其标度和零点,以及输出的标度和零点,并计算量化输出。每个标度-零点对必须具有相同的形状。这意味着它们要么是标量(每张量),要么是一维张量(每输出通道)。每个输入或输出及其相关的零点必须具有相同的类型。当存在偏置(bias)时,它必须使用标度 = 输入标度 * 权重标度,零点为 0 进行量化。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
auto_pad::mlir::StringAttr字符串属性
dilations::mlir::ArrayAttr64位整数数组属性
group::mlir::IntegerAttr64位有符号整数属性
kernel_shape::mlir::ArrayAttr64位整数数组属性
pads::mlir::ArrayAttr64位整数数组属性
strides::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
x 8位无符号整数值张量或8位无符号整数值张量
x_scale 32位浮点值张量
x_zero_point 8位无符号整数值张量或8位无符号整数值张量
w 8位无符号整数值张量或8位无符号整数值张量
权重标度 32位浮点值张量
w_zero_point 8位无符号整数值张量或8位无符号整数值张量
y_scale 32位浮点值张量
y_zero_point 8位无符号整数值张量或8位无符号整数值张量
B 32位无符号整数值张量或None类型

结果

结果 描述
y 8位无符号整数值张量或8位无符号整数值张量

onnx.QLinearMatMul (ONNXQLinearMatMulOp)

ONNX QLinearMatMul 操作

矩阵乘法,行为类似于 [numpy.matmul](https://numpy.com.cn/doc/stable/reference/generated/numpy.matmul.html)。它消耗两个量化输入张量、它们的标度和零点,输出的标度和零点,并计算量化输出。量化公式为 y = saturate((x / y_scale) + y_zero_point)。对于 (x / y_scale),它会四舍五入到最近的偶数。有关详细信息,请参阅 https://en.wikipedia.org/wiki/Rounding。标度和零点必须具有相同的形状。它们可以是标量(每张量)或 N 维张量(对于“a”每行,对于“b”每列)。标量指每张量量化,而 N 维指每行或每列量化。如果输入是形状为 [M, K] 的 2D,则零点和标度张量可以是 M 个元素的向量 [v_1, v_2, …, v_M] 用于每行量化,以及 K 个元素的向量,形状为 [v_1, v_2, …, v_K] 用于每列量化。如果输入是形状为 [D1, D2, M, K] 的 N 维张量,则零点和标度张量可以具有形状 [D1, D2, M, 1] 用于每行量化,以及形状 [D1, D2, 1, K] 用于每列量化。产品绝不能溢出,累积可能溢出,当且仅当在 32 位时。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
a 8位无符号整数值张量或8位无符号整数值张量
a 标度 32位浮点值张量
a_zero_point 8位无符号整数值张量或8位无符号整数值张量
b 8位无符号整数值张量或8位无符号整数值张量
b 标度 32位浮点值张量
b_zero_point 8位无符号整数值张量或8位无符号整数值张量
y_scale 32位浮点值张量
y_zero_point 8位无符号整数值张量或8位无符号整数值张量

结果

结果 描述
y 8位无符号整数值张量或8位无符号整数值张量

onnx.QuantizeLinear (ONNXQuantizeLinearOp)

ONNX QuantizeLinear 操作

线性量化运算符。它消耗一个高精度张量、一个标度和一个零点来计算低精度/量化张量。标度因子和零点必须具有相同的形状,并且可以是用于每张量/每层量化的标量,或者用于每轴量化的 1D 张量。量化公式为 y = saturate ((x / y_scale) + y_zero_point)。对于饱和,如果为 uint8,则饱和到 [0, 255];如果为 int8,则饱和到 [-128, 127]。对于 (x / y_scale),它四舍五入到最近的偶数。请参阅 https://en.wikipedia.org/wiki/Rounding 获取详细信息。'y_zero_point' 和 'y' 必须具有相同的类型。'y_zero_point' 通常不用于量化到 float8e4m3fn、float8e4m3fnuz、float8e5m2、float8e5m2fnuz,但为了保持一致性,量化公式保持不变,并且属性 'y_zero_point' 的类型仍然决定量化类型。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
saturate::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
x 32位浮点数值张量、16位浮点数值张量、bfloat16 类型值张量、32位无符号整数值张量
y_scale 32位浮点数值张量、16位浮点数值张量、bfloat16 类型值张量、32位无符号整数值张量
y_zero_point 8位无符号整数值张量、8位无符号整数值张量、f8E4M3FN 类型值张量、f8E4M3FNUZ 类型值张量、f8E5M2 类型值张量、f8E5M2FNUZ 类型值张量、空类型

结果

结果 描述
y 8位无符号整数值张量、8位无符号整数值张量、f8E4M3FN 类型值张量、f8E4M3FNUZ 类型值张量、f8E5M2 类型值张量、f8E5M2FNUZ 类型值张量

onnx.RMSLayerNormalization (ONNXRMSLayerNormalizationOp)

ONNX RMSLayerNormalization 操作

这是 RMS 层归一化,在 ONNX 中定义为函数。整个计算可以分为两个阶段。第一阶段是近似标准化,它使归一化后的元素具有零均值和单位方差。请参阅 [此论文](https://arxiv.org/pdf/1910.07467.pdf) 的公式 (4)。标准化所需的计算可以通过以下公式描述。 DD = Mul(X, X) Var = ReduceMean<axes=normalized_axes>(DD) VarEps = Add(Var, epsilon) StdDev = Sqrt(VarEps) InvStdDev = Reciprocal(StdDev) Normalized = Mul(X, InvStdDev) 其中 normalized_axes[axis, ..., rank of X - 1]。变量 VarStdDev 分别代表近似方差和标准差。根据 `stash_type` 属性,实际计算必须以不同的浮点精度进行。例如,如果 stash_type 是 1,则此运算符会将所有输入变量转换为 32 位浮点数,执行计算,最后将 Normalized 转换回 X 的原始类型。第二阶段然后使用 NormalizedScaled = Mul(Normalized, Scale) Y = Add(NormalizedScaled, B) 进行缩放和移位。第二阶段不依赖于 stash_type。所有公式均在 [此语法](https://github.com/onnx/onnx/blob/main/docs/Syntax.md) 中。相同的变量(即输入、输出和属性)在上述公式和此运算符的定义中使用相同的名称。设 d[i] 表示 X 的第 i 个维度。如果 X 的形状为 [d[0], ..., d[axis-1], d[axis], ..., d[rank-1]],则 MeanInvStdDev 的形状为 [d[0], ..., d[axis-1], 1, ..., 1]YX 具有相同的形状。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
epsilon::mlir::FloatAttr32位浮点属性
stash_type::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
Scale 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
B 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量或None类型

结果

结果 描述
Y 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
InvStdDev 32位浮点值张量,或bfloat16类型值张量,或None类型

onnx.RNN (ONNXRNNOp)

ONNX RNN 操作

计算一个单层简单 RNN。此运算符通常通过某些自定义实现(如 CuDNN)来支持。

符号

激活函数

注意:以下是可选的

公式(默认:f=Tanh)

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
activation_alpha::mlir::ArrayAttr32位浮点数数组属性
activation_beta::mlir::ArrayAttr32位浮点数数组属性
activations::mlir::ArrayAttr字符串数组属性
clip::mlir::FloatAttr32位浮点属性
direction::mlir::StringAttr字符串属性
hidden_size::mlir::IntegerAttr64位有符号整数属性
layout::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
W bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
R bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
B bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
sequence_lens 32位无符号整数值张量或None类型
initial_h bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
Y_h bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型

onnx.RandomNormalLike (ONNXRandomNormalLikeOp)

ONNX RandomNormalLike 操作

生成一个从正态分布中抽取的随机值张量。输出张量的形状复制自输入张量,正态分布的参数由 meanscale 指定。

数据类型由 'dtype' 参数指定,或者如果未提供,则从输入张量复制。'dtype' 参数必须是 TensorProto 消息的 'DataType' 枚举字段中指定的数据类型之一,并且可以作为输出类型。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ResultTypeInferenceOpInterface, ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
dtype::mlir::IntegerAttr64位有符号整数属性
mean::mlir::FloatAttr32位浮点属性
scale::mlir::FloatAttr32位浮点属性
seed::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.RandomNormal (ONNXRandomNormalOp)

ONNX RandomNormal 操作

生成一个从正态分布中抽取的随机值张量。张量的形状由 shape 参数指定,正态分布的参数由 meanscale 指定。

数据类型由“dtype”参数指定。“dtype”参数必须是 TensorProto 消息中“DataType”枚举字段中指定的数据类型之一。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ResultTypeInferenceOpInterface, ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
dtype::mlir::IntegerAttr64位有符号整数属性
mean::mlir::FloatAttr32位浮点属性
scale::mlir::FloatAttr32位浮点属性
seed::mlir::FloatAttr32位浮点属性
shape::mlir::ArrayAttr64位整数数组属性

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.RandomUniformLike (ONNXRandomUniformLikeOp)

ONNX RandomUniformLike 操作

生成一个从均匀分布中抽取的随机值张量。输出张量的形状复制自输入张量,均匀分布的参数由 lowhigh 指定。

数据类型由 'dtype' 参数指定,或者如果未提供,则从输入张量复制。'dtype' 参数必须是 TensorProto 消息的 'DataType' 枚举字段中指定的数据类型之一,并且可以作为输出类型。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ResultTypeInferenceOpInterface, ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
dtype::mlir::IntegerAttr64位有符号整数属性
::mlir::FloatAttr32位浮点属性
::mlir::FloatAttr32位浮点属性
seed::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.RandomUniform (ONNXRandomUniformOp)

ONNX RandomUniform 操作

生成一个从均匀分布中抽取的随机值张量。张量的形状由 shape 参数指定,范围由 lowhigh 指定。

数据类型由“dtype”参数指定。“dtype”参数必须是 TensorProto 消息中“DataType”枚举字段中指定的数据类型之一。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ResultTypeInferenceOpInterface, ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
dtype::mlir::IntegerAttr64位有符号整数属性
::mlir::FloatAttr32位浮点属性
::mlir::FloatAttr32位浮点属性
seed::mlir::FloatAttr32位浮点属性
shape::mlir::ArrayAttr64位整数数组属性

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Range (ONNXRangeOp)

ONNX Range 操作

生成一个张量,包含从 start 开始,以 delta 为增量,直到 limit(不包含)的一系列数字。

Range 输出中的元素数量计算如下

number_of_elements = max( ceil( (limit - start) / delta ) , 0 )

确定输出内容的伪代码如下所示

for(int i=0; i<number_of_elements; ++i) {
  output[i] =  start + (i * delta);
}

示例 1

Inputs: start = 3, limit = 9, delta = 3
Output: [3, 6]

示例 2

Inputs: start = 10, limit = 4, delta = -2
Output: [10, 8, 6]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
start 32位浮点数值张量、64位浮点数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量
限制 32位浮点数值张量、64位浮点数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量
增量 32位浮点数值张量、64位浮点数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量

结果

结果 描述
输出 32位浮点数值张量、64位浮点数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量

onnx.Reciprocal (ONNXReciprocalOp)

ONNX Reciprocal 操作

Reciprocal 接收一个输入数据(张量),其中倒数 y = 1/x 应用于张量元素。) 并生成一个输出数据 (张量) 其中倒数 y = 1/x 应用于张量元素。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
Y 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceL1 (ONNXReduceL1Op)

ONNX ReduceL1 操作

计算输入张量沿指定轴的 L1 范数。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生 0。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
keepdims::mlir::IntegerAttr64位有符号整数属性
noop_with_empty_axes::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
axes 64位无符号整数值张量或None类型

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceL1V13 (ONNXReduceL1V13Op)

ONNX ReduceL1 操作

计算输入张量沿指定轴的 L1 范数。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生 0。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性
keepdims::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceL2 (ONNXReduceL2Op)

ONNX ReduceL2 操作

计算输入张量沿指定轴的 L2 范数。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生 0。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
keepdims::mlir::IntegerAttr64位有符号整数属性
noop_with_empty_axes::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
axes 64位无符号整数值张量或None类型

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceL2V13 (ONNXReduceL2V13Op)

ONNX ReduceL2 操作

计算输入张量沿指定轴的 L2 范数。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生 0。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性
keepdims::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceLogSumExp (ONNXReduceLogSumExpOp)

ONNX ReduceLogSumExp 操作

计算输入张量沿指定轴的对数和指数。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生负无穷(如果数据类型支持)或未定义。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
keepdims::mlir::IntegerAttr64位有符号整数属性
noop_with_empty_axes::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
axes 64位无符号整数值张量或None类型

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceLogSumExpV13 (ONNXReduceLogSumExpV13Op)

ONNX ReduceLogSumExp 操作

计算输入张量沿指定轴的对数和指数。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生负无穷(如果数据类型支持)或未定义。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性
keepdims::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceLogSum (ONNXReduceLogSumOp)

ONNX ReduceLogSum 操作

计算输入张量沿指定轴的对数和。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生负无穷(如果数据类型支持)或未定义。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
keepdims::mlir::IntegerAttr64位有符号整数属性
noop_with_empty_axes::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
axes 64位无符号整数值张量或None类型

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceLogSumV13 (ONNXReduceLogSumV13Op)

ONNX ReduceLogSum 操作

计算输入张量沿指定轴的对数和。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生负无穷(如果数据类型支持)或未定义。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性
keepdims::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceMax (ONNXReduceMaxOp)

ONNX ReduceMax 操作

计算输入张量沿指定轴的最大值。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生负无穷(如果数据类型支持)或数据类型的最小值。

如果输入数据类型为布尔值,则比较应考虑 False < True

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
keepdims::mlir::IntegerAttr64位有符号整数属性
noop_with_empty_axes::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量、8位无符号整数值张量、8位无符号整数值张量、1位无符号整数值张量
axes 64位无符号整数值张量或None类型

结果

结果 描述
reduced 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量、8位无符号整数值张量、8位无符号整数值张量、1位无符号整数值张量

onnx.ReduceMaxV13 (ONNXReduceMaxV13Op)

ONNX ReduceMax 操作

计算输入张量沿指定轴的最大值。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生负无穷(如果数据类型支持)或数据类型的最小值。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性
keepdims::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量、8位无符号整数值张量、8位无符号整数值张量

结果

结果 描述
reduced 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量、8位无符号整数值张量、8位无符号整数值张量

onnx.ReduceMaxV18 (ONNXReduceMaxV18Op)

ONNX ReduceMax 操作

计算输入张量沿指定轴的最大值。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生负无穷(如果数据类型支持)或数据类型的最小值。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
keepdims::mlir::IntegerAttr64位有符号整数属性
noop_with_empty_axes::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量、8位无符号整数值张量、8位无符号整数值张量
axes 64位无符号整数值张量或None类型

结果

结果 描述
reduced 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量、8位无符号整数值张量、8位无符号整数值张量

onnx.ReduceMean (ONNXReduceMeanOp)

ONNX ReduceMean 操作

计算输入张量沿指定轴的平均值。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生未定义。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
keepdims::mlir::IntegerAttr64位有符号整数属性
noop_with_empty_axes::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
axes 64位无符号整数值张量或None类型

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceMeanV13 (ONNXReduceMeanV13Op)

ONNX ReduceMean 操作

计算输入张量沿指定轴的平均值。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生未定义。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性
keepdims::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceMin (ONNXReduceMinOp)

ONNX ReduceMin 操作

计算输入张量沿指定轴的最小值。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生正无穷(如果数据类型支持)或数据类型的最大值。

如果输入数据类型为布尔值,则比较应考虑 False < True

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
keepdims::mlir::IntegerAttr64位有符号整数属性
noop_with_empty_axes::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量、8位无符号整数值张量、8位无符号整数值张量、1位无符号整数值张量
axes 64位无符号整数值张量或None类型

结果

结果 描述
reduced 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量、8位无符号整数值张量、8位无符号整数值张量、1位无符号整数值张量

onnx.ReduceMinV13 (ONNXReduceMinV13Op)

ONNX ReduceMin 操作

计算输入张量沿指定轴的最小值。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生正无穷(如果数据类型支持)或数据类型的最大值。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性
keepdims::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量、8位无符号整数值张量、8位无符号整数值张量

结果

结果 描述
reduced 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量、8位无符号整数值张量、8位无符号整数值张量

onnx.ReduceMinV18 (ONNXReduceMinV18Op)

ONNX ReduceMin 操作

计算输入张量沿指定轴的最小值。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生正无穷(如果数据类型支持)或数据类型的最大值。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
keepdims::mlir::IntegerAttr64位有符号整数属性
noop_with_empty_axes::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量、8位无符号整数值张量、8位无符号整数值张量
axes 64位无符号整数值张量或None类型

结果

结果 描述
reduced 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量、8位无符号整数值张量、8位无符号整数值张量

onnx.ReduceProd (ONNXReduceProdOp)

ONNX ReduceProd 操作

计算输入张量沿指定轴的乘积。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生 1。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
keepdims::mlir::IntegerAttr64位有符号整数属性
noop_with_empty_axes::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
axes 64位无符号整数值张量或None类型

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceProdV13 (ONNXReduceProdV13Op)

ONNX ReduceProd 操作

计算输入张量沿指定轴的乘积。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生 1。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性
keepdims::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceSum (ONNXReduceSumOp)

ONNX ReduceSum 操作

计算输入张量沿指定轴的和。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生 0。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
keepdims::mlir::IntegerAttr64位有符号整数属性
noop_with_empty_axes::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
axes 64位无符号整数值张量或None类型

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceSumSquare (ONNXReduceSumSquareOp)

ONNX ReduceSumSquare 操作

计算输入张量沿指定轴的平方和。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生 0。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
keepdims::mlir::IntegerAttr64位有符号整数属性
noop_with_empty_axes::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
axes 64位无符号整数值张量或None类型

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceSumSquareV13 (ONNXReduceSumSquareV13Op)

ONNX ReduceSumSquare 操作

计算输入张量沿指定轴的平方和。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。秩为零的输入张量是有效的。对空值集合的归约产生 0。

上述行为类似于 numpy,但有一个例外:numpy 默认 keepdimsFalse 而不是 True

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性
keepdims::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
reduced 32位无符号整数值张量或64位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.ReduceSumV11 (ONNXReduceSumV11Op)

ONNX ReduceSum 操作

计算输入张量沿指定轴的和。如果 keepdims 为 1,则结果张量的秩与输入相同。如果 keepdims 为 0,则结果张量将被裁剪减少的维度。

上述行为与 numpy 相似,不同之处在于 numpy 默认将 keepdims 设置为 False 而不是 True。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性
keepdims::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量

结果

结果 描述
reduced 32位无符号整数值张量、64位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量

onnx.Relu (ONNXReluOp)

ONNX Relu 操作

Relu 接收一个输入数据(张量)) 并生成一个输出数据 (张量) 其中整流线性函数 y = max(0, x) 应用于张量元素。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X 32位浮点值张量,或32位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或64位无符号整数值张量,或16位浮点值张量,或64位浮点值张量,或bfloat16类型值张量

结果

结果 描述
Y 32位浮点值张量,或32位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或64位无符号整数值张量,或16位浮点值张量,或64位浮点值张量,或bfloat16类型值张量

onnx.Reshape (ONNXReshapeOp)

ONNX Reshape 操作

重塑输入张量,类似于 numpy.reshape。第一个输入是数据张量,第二个输入是指定输出形状的形状张量。它输出重塑后的张量。新形状的维度最多可以有一个是 -1。在这种情况下,该值将根据张量的大小和剩余维度推断。维度也可以是 0,在这种情况下,实际维度值保持不变(即从输入张量中获取)。如果设置了 'allowzero',并且新形状包含 0,则该维度将显式设置为零(即不从输入张量中获取)。形状(第二个输入)可以是一个空形状,这意味着转换为标量。输入张量的形状和输出张量的形状必须具有相同数量的元素。

如果属性 'allowzero' 被设置,那么指定的形状同时包含零值和 -1 是无效的,因为对应于 -1 的维度的值无法唯一确定。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
允许零::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量
shape 64位无符号整数值张量

结果

结果 描述
重塑 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量

onnx.Resize (ONNXResizeOp)

ONNX Resize 操作

调整输入张量的大小。通常,它计算输出张量中的每个值作为输入张量中邻域(也称为采样位置)的加权平均值。输出张量的每个维度值是

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

如果未指定输入“sizes”。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
抗锯齿::mlir::IntegerAttr64位有符号整数属性
axes::mlir::ArrayAttr64位整数数组属性
坐标转换模式::mlir::StringAttr字符串属性
cubic_coeff_a::mlir::FloatAttr32位浮点属性
exclude_outside::mlir::IntegerAttr64位有符号整数属性
extrapolation_value::mlir::FloatAttr32位浮点属性
keep_aspect_ratio_policy::mlir::StringAttr字符串属性
mode::mlir::StringAttr字符串属性
nearest_mode::mlir::StringAttr字符串属性

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
roi 16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
scales 32位浮点值张量,或None类型
sizes 64位无符号整数值张量或None类型

结果

结果 描述
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.ResizeV10 (ONNXResizeV10Op)

ONNX Resize 操作

调整输入张量的大小。输出张量的每个维度值是:output_dimension = floor(input_dimension * scale)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
mode::mlir::StringAttr字符串属性

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
scales 32位浮点值张量

结果

结果 描述
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.ResizeV11 (ONNXResizeV11Op)

ONNX Resize 操作

调整输入张量的大小。通常,它计算输出张量中的每个值作为输入张量中邻域(也称为采样位置)的加权平均值。输出张量的每个维度值是:output_dimension = floor(input_dimension * (roi_end - roi_start) * scale),如果未指定输入“sizes”。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
坐标转换模式::mlir::StringAttr字符串属性
cubic_coeff_a::mlir::FloatAttr32位浮点属性
exclude_outside::mlir::IntegerAttr64位有符号整数属性
extrapolation_value::mlir::FloatAttr32位浮点属性
mode::mlir::StringAttr字符串属性
nearest_mode::mlir::StringAttr字符串属性

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
roi 16位浮点值张量或32位浮点值张量或64位浮点值张量
scales 32位浮点值张量
sizes 64位无符号整数值张量或None类型

结果

结果 描述
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.ResizeV13 (ONNXResizeV13Op)

ONNX Resize 操作

调整输入张量的大小。通常,它计算输出张量中的每个值作为输入张量中邻域(也称为采样位置)的加权平均值。输出张量的每个维度值是:output_dimension = floor(input_dimension * (roi_end - roi_start) * scale),如果未指定输入“sizes”。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
坐标转换模式::mlir::StringAttr字符串属性
cubic_coeff_a::mlir::FloatAttr32位浮点属性
exclude_outside::mlir::IntegerAttr64位有符号整数属性
extrapolation_value::mlir::FloatAttr32位浮点属性
mode::mlir::StringAttr字符串属性
nearest_mode::mlir::StringAttr字符串属性

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
roi 16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
scales 32位浮点值张量,或None类型
sizes 64位无符号整数值张量或None类型

结果

结果 描述
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.ResizeV18 (ONNXResizeV18Op)

ONNX Resize 操作

调整输入张量的大小。通常,它计算输出张量中的每个值作为输入张量中邻域(也称为采样位置)的加权平均值。输出张量的每个维度值是
output_dimension = floor(input_dimension * (roi_end - roi_start) * scale)
如果未指定输入“sizes”。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
抗锯齿::mlir::IntegerAttr64位有符号整数属性
axes::mlir::ArrayAttr64位整数数组属性
坐标转换模式::mlir::StringAttr字符串属性
cubic_coeff_a::mlir::FloatAttr32位浮点属性
exclude_outside::mlir::IntegerAttr64位有符号整数属性
extrapolation_value::mlir::FloatAttr32位浮点属性
keep_aspect_ratio_policy::mlir::StringAttr字符串属性
mode::mlir::StringAttr字符串属性
nearest_mode::mlir::StringAttr字符串属性

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
roi 16位浮点值张量或32位浮点值张量或64位浮点值张量或None类型
scales 32位浮点值张量,或None类型
sizes 64位无符号整数值张量或None类型

结果

结果 描述
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Return (ONNXReturnOp)

函数返回操作

语法

operation ::= `onnx.Return` attr-dict ($operands^ `:` type($operands))?

ONNX Return 操作表示函数内的返回操作。该操作接受可变数量的操作数,并且不产生结果。操作数数量和类型必须与包含该操作的函数的签名匹配,但有一个例外:有形状的类型可以比函数签名结果类型具有更具体的形状,这允许重写操作数定义操作以使其结果形状更具体。此操作终止 ONNX 方言中的 func::FuncOp,并在降低到 Krnl 或其他方言之前,在 StandardFuncReturnPass 中被 func::ReturnOp 替换。

特质: AlwaysSpeculatableImplTrait, HasParent<func::FuncOp>, ReturnLike, Terminator

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), RegionBranchTerminatorOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
操作数 任意类型的变长序列

onnx.ReverseSequence (ONNXReverseSequenceOp)

ONNX ReverseSequence 操作

反转具有由 sequence_lens 指定的不同长度的序列批次。

对于沿批次轴迭代的每个切片 i,操作会反转前 sequence_lens[i] 个元素在时间轴上的顺序,并将索引超出 sequence_lens[i] 的元素复制到输出。因此,切片 i 的输出包含在前 sequence_lens[i] 个元素上的反转序列,然后将原始值复制到其他元素。

示例 1:input = [[0.0, 4.0, 8.0, 12.0], [1.0, 5.0, 9.0, 13.0], [2.0, 6.0, 10.0, 14.0], [3.0, 7.0, 11.0, 15.0]] sequence_lens = [4, 3, 2, 1] time_axis = 0 batch_axis = 1

output = [[3.0, 6.0, 9.0, 12.0], [2.0, 5.0, 8.0, 13.0], [1.0, 4.0, 10.0, 14.0], [0.0, 7.0, 11.0, 15.0]]

示例 2:input = [[0.0, 1.0, 2.0, 3.0 ], [4.0, 5.0, 6.0, 7.0 ], [8.0, 9.0, 10.0, 11.0], [12.0, 13.0, 14.0, 15.0]] sequence_lens = [1, 2, 3, 4] time_axis = 1 batch_axis = 0

output = [[0.0, 1.0, 2.0, 3.0 ], [5.0, 4.0, 6.0, 7.0 ], [10.0, 9.0, 8.0, 11.0], [15.0, 14.0, 13.0, 12.0]]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
batch_axis::mlir::IntegerAttr64位有符号整数属性
time_axis::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
sequence_lens 64位无符号整数值张量

结果

结果 描述
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.RoiAlign (ONNXRoiAlignOp)

ONNX RoiAlign 操作

感兴趣区域(RoI)对齐操作,在 [Mask R-CNN 论文](https://arxiv.org/abs/1703.06870) 中描述。RoiAlign 接收输入张量 X 和感兴趣区域(rois)来跨每个 RoI 执行池化;它生成一个形状为 (num_rois, C, output_height, output_width) 的 4D 张量。

RoiAlign 被提出用于避免在从原始图像转换为特征图以及从特征图转换为 RoI 特征的过程中由于量化而导致的错位;在每个 RoI bin 中,采样位置的值通过双线性插值直接计算。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
坐标转换模式::mlir::StringAttr字符串属性
mode::mlir::StringAttr字符串属性
output_height::mlir::IntegerAttr64位有符号整数属性
output_width::mlir::IntegerAttr64位有符号整数属性
sampling_ratio::mlir::IntegerAttr64位有符号整数属性
spatial_scale::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
rois bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
batch_indices 64位无符号整数值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Round (ONNXRoundOp)

ONNX Round 操作

Round 接收一个输入张量并逐元素地四舍五入值,这意味着它找到每个值的最近整数。对于半整数,规则是四舍五入到最近的偶数。如果输入 x 是整数、+0、-0、NaN 或无穷大,则返回 x 本身。输出张量的形状和类型与输入相同。

示例

round([0.9]) = [1.0]
round([2.5]) = [2.0]
round([2.3]) = [2.0]
round([1.5]) = [2.0]
round([-4.5]) = [-4.0]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.STFT (ONNXSTFTOp)

ONNX STFT 操作

计算信号的短时傅里叶变换。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
onesided::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
signal 32位浮点值张量,或16位浮点值张量,或64位浮点值张量,或bfloat16类型值张量
frame_step 32位无符号整数值张量或64位无符号整数值张量
window 32位浮点数值张量、16位浮点数值张量、64位浮点数值张量、bfloat16 类型值张量、空类型
frame_length 32位无符号整数值张量或64位无符号整数值张量或None类型

结果

结果 描述
输出 32位浮点值张量,或16位浮点值张量,或64位浮点值张量,或bfloat16类型值张量

onnx.SVMClassifier (ONNXSVMClassifierOp)

ONNX SVMClassifier 操作

支持向量机分类器

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
classlabels_ints::mlir::ArrayAttr64位整数数组属性
classlabels_strings::mlir::ArrayAttr字符串数组属性
coefficients::mlir::ArrayAttr32位浮点数数组属性
kernel_params::mlir::ArrayAttr32位浮点数数组属性
kernel_type::mlir::StringAttr字符串属性
post_transform::mlir::StringAttr字符串属性
prob_a::mlir::ArrayAttr32位浮点数数组属性
prob_b::mlir::ArrayAttr32位浮点数数组属性
rho::mlir::ArrayAttr32位浮点数数组属性
support_vectors::mlir::ArrayAttr32位浮点数数组属性
vectors_per_class::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
X 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量

结果

结果 描述
Y 字符串类型值张量或64位无符号整数值张量
Z 32位浮点值张量

onnx.SVMRegressor (ONNXSVMRegressorOp)

ONNX SVMRegressor 操作

支持向量机回归预测和单类 SVM 异常检测。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
coefficients::mlir::ArrayAttr32位浮点数数组属性
kernel_params::mlir::ArrayAttr32位浮点数数组属性
kernel_type::mlir::StringAttr字符串属性
n_supports::mlir::IntegerAttr64位有符号整数属性
one_class::mlir::IntegerAttr64位有符号整数属性
post_transform::mlir::StringAttr字符串属性
rho::mlir::ArrayAttr32位浮点数数组属性
support_vectors::mlir::ArrayAttr32位浮点数数组属性

操作数

操作数 描述
X 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量

结果

结果 描述
Y 32位浮点值张量

onnx.Scaler (ONNXScalerOp)

ONNX Scaler 操作

重缩放输入数据,例如通过去除均值和缩放到单位方差来标准化特征。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
offset::mlir::ArrayAttr32位浮点数数组属性
scale::mlir::ArrayAttr32位浮点数数组属性

操作数

操作数 描述
X 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量

结果

结果 描述
Y 32位浮点值张量

onnx.Scan (ONNXScanOp)

ONNX Scan 操作

Scan 可用于迭代一个或多个 scan_input 张量,构造零个或多个 scan_output 张量。它结合了通用递归、函数式编程结构(如 scan、fold、map 和 zip)的思想,旨在支持序列到序列处理的 RNN 类结构的泛化。其他张量(此处称为 state_variables)可以在迭代时(类似于 RNN 中的隐藏状态,也称为循环中的循环携带依赖)用于携带状态。许多常见用法涉及单个 scan_input 张量(可以从中获得类似于 scan、fold 和 map 的功能)。当使用多个 scan_input 时,会获得类似于 zip 的行为。

属性 body 必须是一个图,指定在每次迭代中要执行的计算。它将 state_variables 的当前值以及 scan_inputs 的当前迭代元素作为输入。它必须返回 state_variables 和零个或多个 scan_output_element 张量(更新后)的值。scan_output_element 张量的值在所有迭代中连接起来,以产生 scan 构造的 scan_output 值(类似于 RNN 类结构的连接的中间隐藏状态值)。所有输出张量(state_variables 和 scan_output_element 张量)在每次迭代中都要求具有相同的形状(为了实现高效内存分配而强制执行的限制)。

请注意,传递给 body 子图的迭代元素没有序列轴。它的秩将比相应 scan_input 的秩少一。

scan 操作返回 state_variables 的最终值以及 scan_outputs。

可选属性 scan_input_directions 指定每个 scan 输入的方向(前向或后向)。如果省略此属性,则所有序列都以前向方向扫描。通过在 scan_inputs 中指定相同的张量输入两次,一次以前向方向,一次以反向方向,可以执行双向扫描。

该操作的 scan_output 是通过在每次迭代中连接 body 生成的 scan_output_element 值来生成的。可选属性 scan_output_directions 指定了构建 scan_output 的方向(通过在每次迭代中将 scan_output_element 添加到 scan_output 的开头或结尾)每个 scan_output。如果省略此属性,则 scan_output_element 将在每次迭代中附加到 scan_output。

可选属性 scan_input_axes 指定每个 scan_input 的扫描轴。如果省略,则每个 scan_input 都将在轴 0 上扫描。例如,如果轴 0 是批次轴,轴 1 是要扫描的时间轴,则指定轴值为 1。请注意,扫描非零轴可能效率低于扫描轴零。

可选属性 scan_output_axes 指定用于累积每个 scan_output 的 scan_outputs 的轴。例如,如果轴 1 是输入和输出的时间轴(要扫描),则为 scan_input 轴和 scan_output 轴指定值 1。

请注意,由于 ONNX 限制,运算符的最后一个参数可以是变长的,因此 initial_states 和 scan_inputs 被列为一起的一个输入参数。类似地,final_states 和 scan_outputs 被列为一起的一个输出参数。num_scan_inputs 属性指示 scan_inputs 的数量 M。

行为

Scan <
    num_scan_inputs = m,
    body = loop-body,
    scan_input_axes = [axis_1, ..., axis_m]
> (init_1, ..., init_n, scan_1, ..., scan_m)

等同于以下伪代码

// scan_i.shape[axis_i] denotes the (max) sequence-length of scan_i
// scan_i.shape[axis_i] is required to be equal to scan_j.shape[axis_j] for all i,j.
sequence_length = scan_1.shape[axis_1];

// initialize state-variables
st_1 = init_1; ... st_n = init_n;
// initialize scan-output variables: [] denotes an empty tensor
scan_out_1 = []; ...; scan_out_k = [];
// identify number of iterations:

// execute loop
for (int t = 0; t < sequence_length; ++t) {
    // generate the scan-input elements: the notation T<axis=k>[t] indicates the sub-tensor
    // of rank one less than T obtained by indexing T at position t along axis k.
    si_1 = scan_1<axis=axis_1>[t];
    ... ;
    si_m = scan_m<axis=axis_m>[t];
    // execute loop-body
    st_1, ..., st_n, so_1, ..., so_k = loop-body(st_1, ..., st_n, si_1, ..., si_m)
    // accumulate the scan-output elements
    scan_out_1 = Concat<axis=0>(scan_out_1, so_1); ... ; scan_out_k = Concat<axis=0>(scan_out_k, so_k);
}

return st_1, ..., st_n, scan_out_1, ..., scan_out_k;

示例用法:使用 Scan 编码 RNN

以下示例显示了如何将输入张量 %X、权重张量 %Wi、循环权重张量 %Ri、偏置张量 %Wbi 和 %Rbi 以及初始隐藏状态 %H_0 的简单 RNN 编码为 ScanLoop。请注意,loop-body 是一个嵌套图,它直接计算 %Wi、%Ri、%Wbi 和 %Rbi(通常是 body 图中的常量或初始化器)。如果这些值在外层图计算,则需要将它们作为额外的 state_variables 传入。

graph rnn-encoding {
  %H_0 = ...
  %X = ...
  %Y_h, %Y = Scan[body = <graph rnn-cell-1>, num_scan_inputs=1](%H_0, %X)
  return %Y, %Y_h
}

graph rnn-cell-1 (
  %H_tminus1[FLOAT, tensor]
  %X_t[FLOAT, tensor]
) {
  %Wi = ...
  %Ri = ...
  %Wbi = ...
  %Rbi = ...
  %t1 = X_t * (Wi^T)
  %t2 = H_tminus1*(Ri^T)
  %t3 = Add(%t1, %t2)
  %t4 = Add(%t3, %Wbi)
  %t5 = Add(%t4, %Rbi)
  %Ht = Tanh(%t5)
  %Accumulate = Identity(%Ht)
  return %Ht, %Accumulate
}

特性: AlwaysSpeculatableImplTrait

接口:ConditionallySpeculatable, HasOnnxSubgraphOpInterface, NoMemoryEffect (MemoryEffectOpInterface), ResultTypeInferenceOpInterface, ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
num_scan_inputs::mlir::IntegerAttr64位有符号整数属性
scan_input_axes::mlir::ArrayAttr64位整数数组属性
scan_input_directions::mlir::ArrayAttr64位整数数组属性
scan_output_axes::mlir::ArrayAttr64位整数数组属性
scan_output_directions::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
initial_state_and_scan_inputs 8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、bfloat16 类型值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、字符串类型值张量、1位无符号整数值张量、32位浮点数元素复数类型值张量、64位浮点数元素复数类型值张量、f8E4M3FN 类型值张量、f8E4M3FNUZ 类型值张量、f8E5M2 类型值张量、f8E5M2FNUZ 类型值张量、4位无符号整数值张量、4位无符号整数值张量

结果

结果 描述
final_state_and_scan_outputs 8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、8位无符号整数值张量、16位无符号整数值张量、32位无符号整数值张量、64位无符号整数值张量、bfloat16 类型值张量、16位浮点数值张量、32位浮点数值张量、64位浮点数值张量、字符串类型值张量、1位无符号整数值张量、32位浮点数元素复数类型值张量、64位浮点数元素复数类型值张量、f8E4M3FN 类型值张量、f8E4M3FNUZ 类型值张量、f8E5M2 类型值张量、f8E5M2FNUZ 类型值张量、4位无符号整数值张量、4位无符号整数值张量

onnx.ScatterElements (ONNXScatterElementsOp)

ONNX ScatterElements 操作

ScatterElements 接收三个输入 dataupdatesindices,它们的秩相同且 r >= 1,还有一个可选的 axis 属性,用于标识 data 的一个轴(默认是最外层的轴,即 axis 0)。该操作的输出是通过创建输入 data 的副本,然后使用 indices 指定的特定索引位置的 updates 值来更新其值而生成的。其输出形状与 data 的形状相同。

对于 updates 中的每个条目,data 中的目标索引是通过将 indices 中的相应条目与条目本身的索引组合而获得的:维度 = axis 的索引值是从 indices 中相应条目的值获得的,而维度 != axis 的索引值是从条目本身的索引获得的。

reduction 允许指定一个可选的归约操作,该操作应用于 updates 张量中的所有值,在指定的 indices 位置写入 output。当 reduction 设置为 "none" 时,索引不应有重复条目:即,如果 idx1 != idx2,则 indices[idx1] != indices[idx2]。例如,在 2D 张量情况下,对应于 [i][j] 条目的更新如下执行:

output[indices[i][j]][j] = updates[i][j] if axis = 0,
output[i][indices[i][j]] = updates[i][j] if axis = 1,

reduction 设置为某个归约函数 f 时,对应于 [i][j] 条目的更新执行如下:

output[indices[i][j]][j] = f(output[indices[i][j]][j], updates[i][j]) if axis = 0,
output[i][indices[i][j]] = f(output[i][indices[i][j]], updates[i][j]) if axis = 1,

其中 f+*maxmin,如指定的。

此算子是 GatherElements 的逆运算。它类似于 Torch 的 Scatter 操作。

(Opset 18 更改):将 max/min 添加到允许的归约操作集中。

示例 1

data = [
    [0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0],
    [0.0, 0.0, 0.0],
]
indices = [
    [1, 0, 2],
    [0, 2, 1],
]
updates = [
    [1.0, 1.1, 1.2],
    [2.0, 2.1, 2.2],
]
output = [
    [2.0, 1.1, 0.0]
    [1.0, 0.0, 2.2]
    [0.0, 2.1, 1.2]
]

示例 2

data = [[1.0, 2.0, 3.0, 4.0, 5.0]]
indices = [[1, 3]]
updates = [[1.1, 2.1]]
axis = 1
output = [[1.0, 1.1, 3.0, 2.1, 5.0]]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
reduction::mlir::StringAttr字符串属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
indices 32位无符号整数值张量或64位无符号整数值张量
updates 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.ScatterND (ONNXScatterNDOp)

ONNX ScatterND 操作

ScatterND 接收三个输入:秩为 r >= 1 的 data 张量,秩为 q >= 1 的 indices 张量,以及秩为 q + r - indices.shape[-1] - 1 的 updates 张量。该操作的输出是通过创建输入 data 的副本,然后使用 indices 指定的特定索引位置的 updates 值来更新其值而生成的。其输出形状与 data 的形状相同。

indices 是一个整数张量。令 k 表示 indices.shape[-1],即 indices 形状的最后一个维度。indices 被视为一个 (q-1) 维张量,其中包含 k 元组,每个 k 元组是 data 的部分索引。因此,k 的值最多可以是 data 的秩。当 k 等于 rank(data) 时,每个更新条目指定对张量单个元素的更新。当 k 小于 rank(data) 时,每个更新条目指定对张量的一个切片的更新。索引值允许为负数,符合通常的从末尾开始计数的约定,但应在有效范围内。

updates 被视为一个 (q-1) 维张量,其中包含替换切片值。因此,updates.shape 的前 (q-1) 个维度必须与 indices.shape 的前 (q-1) 个维度匹配。`updates` 的其余维度对应于替换切片值。每个替换切片值是一个 (r-k) 维张量,对应于 data 的末尾 (r-k) 个维度。因此,`updates` 的形状必须等于 indices.shape[0:q-1] ++ data.shape[k:r-1],其中 ++ 表示形状的连接。

输出通过以下方程计算:

output = np.copy(data)
update_indices = indices.shape[:-1]
for idx in np.ndindex(update_indices):
    output[indices[idx]] = updates[idx]

上述循环中的迭代顺序未指定。特别是,索引不应有重复条目:即,如果 idx1 != idx2,则 indices[idx1] != indices[idx2]。这确保了输出值不依赖于迭代顺序。

reduction 允许指定一个可选的归约操作,该操作应用于 updates 张量中的所有值,在指定的 indices 位置写入 output。当 reduction 设置为 "none" 时,索引不应有重复条目:即,如果 idx1 != idx2,则 indices[idx1] != indices[idx2]。这确保了输出值不依赖于迭代顺序。当 reduction 设置为某个归约函数 f 时,output 计算如下:

output = np.copy(data)
update_indices = indices.shape[:-1]
for idx in np.ndindex(update_indices):
    output[indices[idx]] = f(output[indices[idx]], updates[idx])

其中 f+*maxmin,如指定的。

此运算符是 GatherND 的逆运算。

(Opset 18 更改):将 max/min 添加到允许的归约操作集中。

示例 1

data    = [1, 2, 3, 4, 5, 6, 7, 8]
indices = [[4], [3], [1], [7]]
updates = [9, 10, 11, 12]
output  = [1, 11, 3, 10, 9, 6, 7, 12]

示例 2

data    = [[[1, 2, 3, 4], [5, 6, 7, 8], [8, 7, 6, 5], [4, 3, 2, 1]],
            [[1, 2, 3, 4], [5, 6, 7, 8], [8, 7, 6, 5], [4, 3, 2, 1]],
            [[8, 7, 6, 5], [4, 3, 2, 1], [1, 2, 3, 4], [5, 6, 7, 8]],
            [[8, 7, 6, 5], [4, 3, 2, 1], [1, 2, 3, 4], [5, 6, 7, 8]]]
indices = [[0], [2]]
updates = [[[5, 5, 5, 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]],
            [[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4]]]
output  = [[[5, 5, 5, 5], [6, 6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8]],
            [[1, 2, 3, 4], [5, 6, 7, 8], [8, 7, 6, 5], [4, 3, 2, 1]],
            [[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4]],
            [[8, 7, 6, 5], [4, 3, 2, 1], [1, 2, 3, 4], [5, 6, 7, 8]]]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
reduction::mlir::StringAttr字符串属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
indices 64位无符号整数值张量
updates 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Scatter (ONNXScatterOp)

ONNX Scatter 操作

此运算符已弃用。请使用 ScatterElements,它提供相同的功能。

Scatter 接收三个输入 dataupdatesindices,它们的秩相同且 r >= 1,还有一个可选的 axis 属性,用于标识 data 的一个轴(默认是最外层的轴,即 axis 0)。该操作的输出是通过创建输入 data 的副本,然后使用 indices 指定的特定索引位置的 updates 值来更新其值而生成的。其输出形状与 data 的形状相同。

对于 updates 中的每个条目,data 中的目标索引是通过将 indices 中的相应条目与条目本身的索引组合而获得的:维度 = axis 的索引值是从 indices 中相应条目的值获得的,而维度 != axis 的索引值是从条目本身的索引获得的。

例如,在 2-D 张量的情况下,对应于 [i][j] 条目的更新如下所示

  output[indices[i][j]][j] = updates[i][j] if axis = 0,
  output[i][indices[i][j]] = updates[i][j] if axis = 1,

此算子是 GatherElements 的逆运算。它类似于 Torch 的 Scatter 操作。

示例 1

  data = [
      [0.0, 0.0, 0.0],
      [0.0, 0.0, 0.0],
      [0.0, 0.0, 0.0],
  ]
  indices = [
      [1, 0, 2],
      [0, 2, 1],
  ]
  updates = [
      [1.0, 1.1, 1.2],
      [2.0, 2.1, 2.2],
  ]
  output = [
      [2.0, 1.1, 0.0]
      [1.0, 0.0, 2.2]
      [0.0, 2.1, 1.2]
  ]

示例 2

  data = [[1.0, 2.0, 3.0, 4.0, 5.0]]
  indices = [[1, 3]]
  updates = [[1.1, 2.1]]
  axis = 1
  output = [[1.0, 1.1, 3.0, 2.1, 5.0]]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
indices 32位无符号整数值张量或64位无符号整数值张量
updates 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Selu (ONNXSeluOp)

ONNX Selu 操作

Selu 接收一个输入数据(张量)) 并生成一个输出数据 (张量) 其中缩放指数线性单元函数 `y = gamma * (alpha * e^x - alpha) for x <= 0`, `y = gamma * x for x > 0` 应用于张量元素。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
alpha::mlir::FloatAttr32位浮点属性
gamma::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.SequenceAt (ONNXSequenceAtOp)

ONNX SequenceAt 操作

从 `input_sequence` 中的 `position` 位置输出一个张量副本。`position` 的可接受范围是 `[-n, n - 1]`,其中 `n` 是 `input_sequence` 中张量的数量。负值表示从后面计数位置。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
input_sequence 8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或16位浮点值张量序列类型或32位浮点值张量序列类型或64位浮点值张量序列类型或字符串类型值张量序列类型或1位无符号整数值张量序列类型或具有32位浮点元素的复数类型张量序列类型或具有64位浮点元素的复数类型张量序列类型
position 32位无符号整数值张量或64位无符号整数值张量

结果

结果 描述
张量 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.SequenceConstruct (ONNXSequenceConstructOp)

ONNX SequenceConstruct 操作

构造一个包含 `inputs` 张量的张量序列。`inputs` 中的所有张量必须具有相同的数据类型。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
inputs 8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或字符串类型值张量,或1位无符号整数值张量,或带32位浮点元素的复数类型值张量,或带64位浮点元素的复数类型值张量,或f8E4M3FN类型值张量,或f8E4M3FNUZ类型值张量,或f8E5M2类型值张量,或f8E5M2FNUZ类型值张量,或4位无符号整数值张量,或4位无符号整数值张量,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或16位浮点值张量的SeqType,或32位浮点值张量的SeqType,或64位浮点值张量的SeqType,或字符串类型值张量的SeqType,或1位无符号整数值张量的SeqType,或带32位浮点元素的复数类型值张量的SeqType,或带64位浮点元素的复数类型值张量的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或16位浮点值张量OptType的SeqType,或32位浮点值张量OptType的SeqType,或64位浮点值张量OptType的SeqType,或字符串类型值张量OptType的SeqType,或1位无符号整数值张量OptType的SeqType,或带32位浮点元素的复数类型值张量OptType的SeqType,或带64位浮点元素的复数类型值张量OptType的SeqType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或16位浮点值张量OptType,或32位浮点值张量OptType,或64位浮点值张量OptType,或字符串类型值张量OptType,或1位无符号整数值张量OptType,或带32位浮点元素的复数类型值张量OptType,或带64位浮点元素的复数类型值张量OptType,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或字符串类型值张量,或1位无符号整数值张量,或带32位浮点元素的复数类型值张量,或带64位浮点元素的复数类型值张量,或f8E4M3FN类型值张量,或f8E4M3FNUZ类型值张量,或f8E5M2类型值张量,或f8E5M2FNUZ类型值张量,或4位无符号整数值张量,或4位无符号整数值张量,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或bfloat16类型值张量的SeqType,或16位浮点值张量的SeqType,或32位浮点值张量的SeqType,或64位浮点值张量的SeqType,或字符串类型值张量的SeqType,或1位无符号整数值张量的SeqType,或带32位浮点元素的复数类型值张量的SeqType,或带64位浮点元素的复数类型值张量的SeqType,或f8E4M3FN类型值张量的SeqType,或f8E4M3FNUZ类型值张量的SeqType,或f8E5M2类型值张量的SeqType,或f8E5M2FNUZ类型值张量的SeqType,或4位无符号整数值张量的SeqType,或4位无符号整数值张量的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或bfloat16类型值张量OptType的SeqType,或16位浮点值张量OptType的SeqType,或32位浮点值张量OptType的SeqType,或64位浮点值张量OptType的SeqType,或字符串类型值张量OptType的SeqType,或1位无符号整数值张量OptType的SeqType,或带32位浮点元素的复数类型值张量OptType的SeqType,或带64位浮点元素的复数类型值张量OptType的SeqType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或bfloat16类型值张量OptType,或16位浮点值张量OptType,或32位浮点值张量OptType,或64位浮点值张量OptType,或字符串类型值张量OptType,或1位无符号整数值张量OptType,或带32位浮点元素的复数类型值张量OptType,或带64位浮点元素的复数类型值张量OptType,或f8E4M3FN类型值张量OptType,或f8E4M3FNUZ类型值张量OptType,或f8E5M2类型值张量OptType,或f8E5M2FNUZ类型值张量OptType,或4位无符号整数值张量OptType,或4位无符号整数值张量OptType

结果

结果 描述
output_sequence 8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或16位浮点值张量序列类型或32位浮点值张量序列类型或64位浮点值张量序列类型或字符串类型值张量序列类型或1位无符号整数值张量序列类型或具有32位浮点元素的复数类型张量序列类型或具有64位浮点元素的复数类型张量序列类型

onnx.SequenceEmpty (ONNXSequenceEmptyOp)

ONNX SequenceEmpty 操作

构造一个具有给定数据类型的空张量序列。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
dtype::mlir::IntegerAttr64位有符号整数属性

结果

结果 描述
输出 8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或16位浮点值张量序列类型或32位浮点值张量序列类型或64位浮点值张量序列类型或字符串类型值张量序列类型或1位无符号整数值张量序列类型或具有32位浮点元素的复数类型张量序列类型或具有64位浮点元素的复数类型张量序列类型

onnx.SequenceErase (ONNXSequenceEraseOp)

ONNX SequenceErase 操作

输出一个张量序列,该序列从 `input_sequence` 中移除 `position` 位置的张量。`position` 的可接受范围是 `[-n, n - 1]`,其中 `n` 是 `input_sequence` 中张量的数量。负值表示从后面计数位置。`position` 是可选的,默认情况下它会擦除 `input_sequence` 中的最后一个张量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
input_sequence 8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或16位浮点值张量序列类型或32位浮点值张量序列类型或64位浮点值张量序列类型或字符串类型值张量序列类型或1位无符号整数值张量序列类型或具有32位浮点元素的复数类型张量序列类型或具有64位浮点元素的复数类型张量序列类型
position 32位无符号整数值张量或64位无符号整数值张量或None类型

结果

结果 描述
output_sequence 8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或16位浮点值张量序列类型或32位浮点值张量序列类型或64位浮点值张量序列类型或字符串类型值张量序列类型或1位无符号整数值张量序列类型或具有32位浮点元素的复数类型张量序列类型或具有64位浮点元素的复数类型张量序列类型

onnx.SequenceInsert (ONNXSequenceInsertOp)

ONNX SequenceInsert 操作

输出一个张量序列,该序列将 `tensor` 插入到 `input_sequence` 的 `position` 位置。`tensor` 必须与 `input_sequence` 具有相同的数据类型。`position` 的可接受范围是 `[-n, n]`,其中 `n` 是 `input_sequence` 中张量的数量。负值表示从后面计数位置。`position` 是可选的,默认情况下它将 `tensor` 插入到 `input_sequence` 的末尾。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
input_sequence 8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或16位浮点值张量序列类型或32位浮点值张量序列类型或64位浮点值张量序列类型或字符串类型值张量序列类型或1位无符号整数值张量序列类型或具有32位浮点元素的复数类型张量序列类型或具有64位浮点元素的复数类型张量序列类型
张量 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
position 32位无符号整数值张量或64位无符号整数值张量或None类型

结果

结果 描述
output_sequence 8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或16位浮点值张量序列类型或32位浮点值张量序列类型或64位浮点值张量序列类型或字符串类型值张量序列类型或1位无符号整数值张量序列类型或具有32位浮点元素的复数类型张量序列类型或具有64位浮点元素的复数类型张量序列类型

onnx.SequenceLength (ONNXSequenceLengthOp)

ONNX SequenceLength 操作

生成一个包含 `input_sequence` 中张量数量的标量(空形状的张量)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
input_sequence 8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或16位浮点值张量序列类型或32位浮点值张量序列类型或64位浮点值张量序列类型或字符串类型值张量序列类型或1位无符号整数值张量序列类型或具有32位浮点元素的复数类型张量序列类型或具有64位浮点元素的复数类型张量序列类型

结果

结果 描述
length 64位无符号整数值张量

onnx.SequenceMap (ONNXSequenceMapOp)

ONNX SequenceMap 操作

将子图应用于输入序列中的每个样本。

输入可以是张量或序列,第一个输入必须是序列。第一个输入序列的长度将决定输出中样本的数量。任何其他序列输入应具有相同数量的样本。输入和输出的数量应与子图匹配。

对于输出中的每个第 i 个元素,将从第 i 个位置的输入序列中提取一个样本,并将其应用于子图。输出将包含子图为每个样本生成的输出,顺序与输入相同。

此运算符假定处理每个样本是独立的,并且可以并行或以任何顺序执行。用户不能期望子图计算有任何特定的顺序。

特性: AlwaysSpeculatableImplTrait

接口:ConditionallySpeculatableHasOnnxSubgraphOpInterfaceNoMemoryEffect (MemoryEffectOpInterface)ShapeHelperOpInterfaceShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
input_sequence 8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或16位浮点值张量序列类型或32位浮点值张量序列类型或64位浮点值张量序列类型或字符串类型值张量序列类型或1位无符号整数值张量序列类型或具有32位浮点元素的复数类型张量序列类型或具有64位浮点元素的复数类型张量序列类型
additional_inputs 变长的 8 位无符号整数值张量或 16 位无符号整数值张量或 32 位无符号整数值张量或 64 位无符号整数值张量或 8 位无符号整数值张量或 16 位无符号整数值张量或 32 位无符号整数值张量或 64 位无符号整数值张量或 16 位浮点值张量或 32 位浮点值张量或 64 位浮点值张量或字符串类型值张量或 1 位无符号整数值张量或具有 32 位浮点元素的复数类型张量或具有 64 位浮点元素的复数类型张量或 8 位无符号整数值序列张量或 16 位无符号整数值序列张量或 32 位无符号整数值序列张量或 64 位无符号整数值序列张量或 8 位无符号整数值序列张量或 16 位无符号整数值序列张量或 32 位无符号整数值序列张量或 64 位无符号整数值序列张量或 16 位浮点值序列张量或 32 位浮点值序列张量或 64 位浮点值序列张量或字符串类型值序列张量或 1 位无符号整数值序列张量或具有 32 位浮点元素的复数类型序列张量或具有 64 位浮点元素的复数类型序列张量

结果

结果 描述
out_sequence 变长序列张量 8 位无符号整数值或序列张量 16 位无符号整数值或序列张量 32 位无符号整数值或序列张量 64 位无符号整数值或序列张量 8 位无符号整数值或序列张量 16 位无符号整数值或序列张量 32 位无符号整数值或序列张量 64 位无符号整数值或序列张量 16 位浮点值或序列张量 32 位浮点值或序列张量 64 位浮点值或序列张量字符串类型值或序列张量 1 位无符号整数值或序列张量复数类型 32 位浮点元素或序列张量复数类型 64 位浮点元素

onnx.Shape (ONNXShapeOp)

ONNX Shape 操作

接受一个张量作为输入,并输出一个包含输入张量形状的 1D int64 张量。可选属性 start 和 end 可用于计算输入张量形状的切片。如果省略 start 轴,则切片从轴 0 开始。如果指定了 end 轴,则它是排他的(并且返回的值将不包括该轴的大小)。如果省略 end 轴,则包含到最后一个轴的轴。负轴表示从最后一个轴开始计数。请注意,轴将被截断到输入张量的秩 r 的范围 [0, r-1],如果它们超出范围(在负轴的情况下加上 r)。因此,指定任何大于 r 的 end 值等同于指定 end 值为 r,指定任何小于 -r 的 start 值等同于指定 start 值为 0。

示例

Input tensor with shape: [2, 3, 4]
No attributes specified.
Output: [2, 3, 4]
Input tensor with shape: [2, 3, 4]
start: -1
Output: [4]
Input tensor with shape: [2, 3, 4]
end: -1
Output: [2, 3]
Input tensor with shape: [2, 3, 4]
start: 1
end: 2
Output: [3]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
end::mlir::IntegerAttr64位有符号整数属性
start::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量

结果

结果 描述
shape 64位无符号整数值张量

onnx.ShapeTransform (ONNXShapeTransformOp)

ONNX 逐元素形状变换操作

此运算符将张量转换为另一个张量,该张量的形状由给定的仿射映射改变。这是一个逐元素变换,因此输入中的每个元素都将通过仿射映射复制到输出中的一个元素。仿射映射必须是双射的。

例如,以下代码使用 onnx.ShapeTransform 将张量从 2D 重塑为 4D。

#reshape = affine_map(d0, d1) -> (d0/32, d0%32, d1/64, d1%64)
%Y = onnx.ShapeTransform(%arg0) {index_map = #reshape} :  (tensor<128x128xf32>) -> tensor<4x32x2x64xf32>

当通过降低到 krnl 方言时,onnx.ShapeTransform 将最终具体化为 affine.for,例如:

%alloc = memref.alloc() {alignment = 16 : i64} : memref<4x32x2x64xf32>
affine.for %arg1 = 0 to 128 {
  affine.for %arg2 = 0 to 128 {
    %0 = affine.load %arg0[%arg1, %arg2] : memref< 128x128xf32 >
    affine.store %0, %alloc[%arg1 / 32, %arg1 % 32, %arg2 / 64, %arg2 % 64] : memref<4x32x2x64xf32>
  }
}

在规范化时,ShapeTransform 操作会通过组合它们的仿射映射来组合成一个新的 ShapeTransform 操作。

目前,此操作仅支持静态维度。

此操作不是标准的一部分,已添加以协助 onnx-mlir。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
index_map::mlir::AffineMapAttr仿射映射属性

操作数

操作数 描述
输入 32位浮点值张量

结果

结果 描述
输出 32位浮点值张量

onnx.Shrink (ONNXShrinkOp)

ONNX Shrink 操作

Shrink 接受一个输入数据(Tensor)并生成一个 Tensor 输出,其数据类型和形状与输入相同。它有两个属性,lambd 和 bias。此运算符的公式是:如果 x < -lambd,y = x + bias;如果 x > lambd,y = x - bias;否则,y = 0。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
bias::mlir::FloatAttr32位浮点属性
lambd::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Sigmoid (ONNXSigmoidOp)

ONNX Sigmoid 操作

Sigmoid 接受一个输入数据(Tensor) 并生成一个输出数据 (张量),其中 Sigmoid 函数 y = 1 / (1 + exp(-x)) 被逐元素应用于张量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
Y 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Sign (ONNXSignOp)

ONNX Sign 操作

逐元素计算给定输入张量的符号。如果输入 > 0,输出 1。如果输入 < 0,输出 -1。如果输入 == 0,输出 0。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Sin (ONNXSinOp)

ONNX Sin 操作

逐元素计算给定输入张量的正弦值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Sinh (ONNXSinhOp)

ONNX Sinh 操作

逐元素计算给定输入张量的双曲正弦值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Size (ONNXSizeOp)

ONNX Size 操作

接受一个张量作为输入,并输出一个等于输入张量总元素数的 int64 标量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量

结果

结果 描述
size 64位无符号整数值张量

onnx.Slice (ONNXSliceOp)

ONNX Slice 操作

沿多个轴生成输入张量的切片。类似于 Numpy:https://numpy.com.cn/doc/stable/user/basics.indexing.html?highlight=slice#slicing-and-striding

Slice 使用 startsendsaxessteps 输入来选择其输入 data 张量的子张量。

对于 r = rank(input) 的每个 i(在 [0, ... r-1] 中),如下计算有效的 starts[i]ends[i]steps[i]

如果省略 axes,则设置为 [0, ..., r-1]。如果省略 steps,则设置为长度为 len(starts)[1, ..., 1]

有效值初始化为 start[i] = 0ends[i] = dims[i],其中 dimsinput 的维度,steps[i] = 1

负的 axes 元素通过加上 r(其中 r = rank(input))来使其非负。

负的 starts[i]ends[i] 值通过加上 dims[axes[i]](其中 dimsinput 的维度)进行调整。然后 start[axes[i]] 是调整后的 starts[i],对于正向步长被截断到范围 [0, dims[axes[i]]],对于负向步长被截断到范围 [0, dims[axes[i]]-1]

调整后的 ends[i] 的截断取决于 steps[i] 的符号,并且必须能够复制 0 到 dims[axes[i]] 个元素,因此对于正向步长 ends[axes[i]] 被截断到 [0, dims[axes[i]]],而对于负向步长则被截断到 [-1, dims[axes[i]]-1]

最后,steps[axes[i]] = steps[i]

对于切片到尺寸未知的维度末端,建议在正向切片时传递 INT_MAX,在反向切片时传递 ‘INT_MIN’。

示例 1

data = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
]
axes = [0, 1]
starts = [1, 0]
ends = [2, 3]
steps = [1, 2]
result = [
    [5, 7],
]

示例 2

data = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
]
starts = [0, 1]
ends = [-1, 1000]
result = [
    [2, 3, 4],
]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
starts 32位无符号整数值张量或64位无符号整数值张量
ends 32位无符号整数值张量或64位无符号整数值张量
axes 32位无符号整数值张量或64位无符号整数值张量或None类型
steps 32位无符号整数值张量或64位无符号整数值张量或None类型

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.SoftmaxCrossEntropyLoss (ONNXSoftmaxCrossEntropyLossOp)

ONNX SoftmaxCrossEntropyLoss 操作

衡量“scores”和“labels”之间 Softmax 交叉熵的损失函数。此运算符首先计算一个损失张量,其形状与标签输入相同。如果输入是形状为 (N, C) 的 2-D,则损失张量可能是一个 N 元素向量 L = (l_1, l_2, …, l_N)。如果输入是形状为 (N, C, D1, D2,…, Dk) 的 N-D 张量,则损失张量 L 可能具有 (N, D1, D2,…, Dk) 的形状,并且 L[i,][j_1][j_2]…[j_k] 表示 L 中的一个标量元素。在 L 可用后,此运算符可以选择执行一个归约操作。

一个样本的损失 l_i 可以计算如下:

l[i][d1][d2]...[dk] = -y[i][c][d1][d2]..[dk], where i is the index of classes.

l[i][d1][d2]...[dk] = -y[i][c][d1][d2]..[dk] * weights[c], if 'weights' is provided.

当 label-value 等于 ignore_index 时,损失为零。

l[i][d1][d2]...[dk]  = 0, when labels[n][d1][d2]...[dk] = ignore_index

其中

p = Softmax(scores)
y = Log(p)
c = labels[i][d1][d2]...[dk]

最后,L 被选择性地归约

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
ignore_index::mlir::IntegerAttr64位有符号整数属性
reduction::mlir::StringAttr字符串属性

操作数

操作数 描述
scores 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
labels 32位无符号整数值张量或64位无符号整数值张量
weights 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量或None类型

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
log_prob 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量或None类型

onnx.Softmax (ONNXSoftmaxOp)

ONNX Softmax 操作

该运算符计算给定输入的归一化指数值

Softmax(input, axis) = Exp(input) / ReduceSum(Exp(input), axis=axis, keepdims=1)

“axis”属性指示将执行 Softmax 的维度。输出张量具有相同的形状,并包含相应输入的 Softmax 值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.SoftmaxV11 (ONNXSoftmaxV11Op)

ONNX Softmax 操作

该运算符计算给定输入批次中每个层的 Softmax(归一化指数)值。

输入不需要显式为 2D 向量;相反,它将被强制转换为 2D 向量。对于任意 n 维张量输入 \in [a_0, a_1, …, a_{k-1}, a_k, …, a_{n-1}] 且 k 是提供的轴,则输入将被强制转换为维度为 [a_0 * … * a_{k-1}, a_k * … * a_{n-1}] 的二维张量。对于默认情况 axis=1,这意味着输入张量将被强制转换为维度为 [a_0, a_1 * … * a_{n-1}] 的 2D 张量,其中 a_0 通常是批次大小。在这种情况下,我们必须有 a_0 = N 且 a_1 * … * a_{n-1} = D。必须正确匹配这些维度,否则运算符将引发错误。输出张量具有相同的形状,并包含相应输入的 Softmax 值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Softplus (ONNXSoftplusOp)

ONNX Softplus 操作

Softplus 接受一个输入数据(Tensor) 并生成一个输出数据 (张量),其中 softplus 函数 y = ln(exp(x) + 1) 被逐元素应用于张量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Softsign (ONNXSoftsignOp)

ONNX Softsign 操作

逐元素计算给定输入张量的 softsign (x/(1+ x ))。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.SpaceToDepth (ONNXSpaceToDepthOp)

ONNX SpaceToDepth 操作

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

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
blocksize::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Split (ONNXSplitOp)

ONNX Split 操作

沿指定的“axis”将张量分割成一组张量。必须指定输入“split”或属性“num_outputs”,但不能同时指定两者。如果指定了属性“num_outputs”,则张量被分割成大小相等的块。如果张量不能均匀地分割成 num_outputs 个部分,则最后一个块将较小。如果指定了输入“split”,则表示分割中每个输出的大小。如果输入“split”被指定,它表示分割中每个输出的大小。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
num_outputs::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
split 64位无符号整数值张量或None类型

结果

结果 描述
outputs 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.SplitToSequence (ONNXSplitToSequenceOp)

ONNX SplitToSequence 操作

沿指定的“axis”将张量分割成一系列张量。可以使用可选参数“split”指定部分的长度。如果未指定参数 split,则使用默认标量值 1 作为 split 的值。‘split’必须只包含正数。‘split’是标量(空形状的张量),或是一维张量。如果‘split’是标量,则‘input’将被分割成大小为‘split’的块(如果可能)。如果‘input’沿给定轴‘axis’的大小不能被‘split’整除,则最后一个块可能小于‘split’。如果‘split’是一维张量,则输入张量被分割成 `size(split)` 个块,在‘axis’上的部分长度由‘split’指定。在这种情况下,‘split’中的条目总和必须等于输入张量在‘axis’上的维度大小。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
keepdims::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
split 32位无符号整数值张量或64位无符号整数值张量或None类型

结果

结果 描述
output_sequence 8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或8位无符号整数值张量序列类型或16位无符号整数值张量序列类型或32位无符号整数值张量序列类型或64位无符号整数值张量序列类型或16位浮点值张量序列类型或32位浮点值张量序列类型或64位浮点值张量序列类型或字符串类型值张量序列类型或1位无符号整数值张量序列类型或具有32位浮点元素的复数类型张量序列类型或具有64位浮点元素的复数类型张量序列类型

onnx.SplitV11 (ONNXSplitV11Op)

ONNX Split 操作

沿指定的“axis”将张量分割成一组张量。可以使用参数“split”指定部分的长度。否则,张量被分割成大小相等的块。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
split::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
outputs 8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或字符串类型值张量,或1位无符号整数值张量,或带32位浮点元素的复数类型值张量,或带64位浮点元素的复数类型值张量,或f8E4M3FN类型值张量,或f8E4M3FNUZ类型值张量,或f8E5M2类型值张量,或f8E5M2FNUZ类型值张量,或4位无符号整数值张量,或4位无符号整数值张量,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或16位浮点值张量的SeqType,或32位浮点值张量的SeqType,或64位浮点值张量的SeqType,或字符串类型值张量的SeqType,或1位无符号整数值张量的SeqType,或带32位浮点元素的复数类型值张量的SeqType,或带64位浮点元素的复数类型值张量的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或16位浮点值张量OptType的SeqType,或32位浮点值张量OptType的SeqType,或64位浮点值张量OptType的SeqType,或字符串类型值张量OptType的SeqType,或1位无符号整数值张量OptType的SeqType,或带32位浮点元素的复数类型值张量OptType的SeqType,或带64位浮点元素的复数类型值张量OptType的SeqType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或16位浮点值张量OptType,或32位浮点值张量OptType,或64位浮点值张量OptType,或字符串类型值张量OptType,或1位无符号整数值张量OptType,或带32位浮点元素的复数类型值张量OptType,或带64位浮点元素的复数类型值张量OptType,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或8位无符号整数值张量,或16位无符号整数值张量,或32位无符号整数值张量,或64位无符号整数值张量,或16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或字符串类型值张量,或1位无符号整数值张量,或带32位浮点元素的复数类型值张量,或带64位浮点元素的复数类型值张量,或f8E4M3FN类型值张量,或f8E4M3FNUZ类型值张量,或f8E5M2类型值张量,或f8E5M2FNUZ类型值张量,或4位无符号整数值张量,或4位无符号整数值张量,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或8位无符号整数值张量的SeqType,或16位无符号整数值张量的SeqType,或32位无符号整数值张量的SeqType,或64位无符号整数值张量的SeqType,或bfloat16类型值张量的SeqType,或16位浮点值张量的SeqType,或32位浮点值张量的SeqType,或64位浮点值张量的SeqType,或字符串类型值张量的SeqType,或1位无符号整数值张量的SeqType,或带32位浮点元素的复数类型值张量的SeqType,或带64位浮点元素的复数类型值张量的SeqType,或f8E4M3FN类型值张量的SeqType,或f8E4M3FNUZ类型值张量的SeqType,或f8E5M2类型值张量的SeqType,或f8E5M2FNUZ类型值张量的SeqType,或4位无符号整数值张量的SeqType,或4位无符号整数值张量的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或8位无符号整数值张量OptType的SeqType,或16位无符号整数值张量OptType的SeqType,或32位无符号整数值张量OptType的SeqType,或64位无符号整数值张量OptType的SeqType,或bfloat16类型值张量OptType的SeqType,或16位浮点值张量OptType的SeqType,或32位浮点值张量OptType的SeqType,或64位浮点值张量OptType的SeqType,或字符串类型值张量OptType的SeqType,或1位无符号整数值张量OptType的SeqType,或带32位浮点元素的复数类型值张量OptType的SeqType,或带64位浮点元素的复数类型值张量OptType的SeqType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或8位无符号整数值张量OptType,或16位无符号整数值张量OptType,或32位无符号整数值张量OptType,或64位无符号整数值张量OptType,或bfloat16类型值张量OptType,或16位浮点值张量OptType,或32位浮点值张量OptType,或64位浮点值张量OptType,或字符串类型值张量OptType,或1位无符号整数值张量OptType,或带32位浮点元素的复数类型值张量OptType,或带64位浮点元素的复数类型值张量OptType,或f8E4M3FN类型值张量OptType,或f8E4M3FNUZ类型值张量OptType,或f8E5M2类型值张量OptType,或f8E5M2FNUZ类型值张量OptType,或4位无符号整数值张量OptType,或4位无符号整数值张量OptType

onnx.SplitV13 (ONNXSplitV13Op)

ONNX Split 操作

沿指定的“axis”将张量分割成一组张量。可以使用输入“split”指定部分的长度。否则,张量被分割成大小相等的块。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
split 64位无符号整数值张量或None类型

结果

结果 描述
outputs 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Sqrt (ONNXSqrtOp)

ONNX Sqrt 操作

平方根接受一个输入数据(Tensor) 并生成一个输出数据 (张量),其中平方根 y = x^0.5 被逐元素应用于张量。如果 x 为负数,则返回 NaN。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
X 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
Y 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Squeeze (ONNXSqueezeyOp)

ONNX Squeeze 操作

从张量的形状中移除单维条目。接受一个输入 axes,其中包含要压缩的轴列表。如果未提供 axes,则从形状中移除所有单维。如果选择了一个形状条目不等于一的轴,则会引发错误。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量
axes 64位无符号整数值张量或None类型

结果

结果 描述
squeezed 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量

onnx.SqueezeV11 (ONNXSqueezeV11Op)

ONNX Squeeze 操作

从张量的形状中移除单维条目。接受一个参数 axes,其中包含要压缩的轴列表。如果未提供 axes,则从形状中移除所有单维。如果选择了一个形状条目不等于一的轴,则会引发错误。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
squeezed 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.StringNormalizer (ONNXStringNormalizerOp)

ONNX StringNormalizer 操作

StringNormalization 执行基本的字符串清理操作。此运算符只有一个输入(由 X 表示)和一个输出(由 Y 表示)。此运算符首先检查 X 中的元素,并移除“stopwords”属性中指定的元素。移除停止词后,中间结果可以根据“case_change_action”属性进一步转换为小写、大写或直接返回。此运算符仅接受 [C]- 和 [1, C]-张量。如果 X 中的所有元素都被删除,输出将是形状为 [1](如果输入形状是 [C])和形状为 [1, 1](如果输入形状是 [1, C])的字符串张量的空值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
case_change_action::mlir::StringAttr字符串属性
is_case_sensitive::mlir::IntegerAttr64位有符号整数属性
locale::mlir::StringAttr字符串属性
stopwords::mlir::ArrayAttr字符串数组属性

操作数

操作数 描述
X 字符串类型值张量

结果

结果 描述
Y 字符串类型值张量

onnx.Sub (ONNXSubOp)

ONNX Sub 操作

执行逐元素二元减法(支持 Numpy 风格的广播)。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

(Opset 14 更改):扩展支持的类型以包括 uint8、int8、uint16 和 int16。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量
B 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

结果

结果 描述
C 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Sum (ONNXSumOp)

ONNX Sum 操作

输入张量逐元素求和(支持 Numpy 风格的广播)。所有输入和输出必须具有相同的数据类型。此运算符支持**多维(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
data_0 16位浮点值张量,或32位浮点值张量,或64位浮点值张量,或bfloat16类型值张量

结果

结果 描述
sum 16位浮点值张量或32位浮点值张量或64位浮点值张量或bfloat16类型值张量

onnx.Tan (ONNXTanOp)

ONNX Tan 操作

逐元素计算给定输入张量的正切值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Tanh (ONNXTanhOp)

ONNX Tanh 操作

逐元素计算给定输入张量的双曲正切值。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
输出 bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.TfIdfVectorizer (ONNXTfIdfVectorizerOp)

ONNX TfIdfVectorizer 操作

此变换从输入序列中提取 n-gram 并将其保存为向量。输入可以是 1-D 或 2-D 张量。对于 1-D 输入,输出是该输入的 n-gram 表示。对于 2-D 输入,输出也是一个 2-D 张量,其第 i 行是第 i 个输入行的 n-gram 表示。更具体地说,如果输入形状为 [C],则相应的输出形状将是 [max(ngram_indexes) + 1]。如果输入形状为 [N, C],则此运算符会生成一个 [N, max(ngram_indexes) + 1]-张量。

与标准的 n-gram 提取不同,这里从原始序列中提取 n-gram 的索引不必是连续的数字。索引之间的不连续性由跳数控制。如果跳数是 2,那么在扫描原始序列时应该跳过两个 token。让我们看一个例子。假设输入序列是 [94, 17, 36, 12, 28],跳数是 2。关联的 2-gram 分别是 [94, 12] 和 [17, 28],索引分别是 [0, 3] 和 [1, 4]。如果跳数变为 0,则生成的 2-gram 分别是 [94, 17], [17, 36], [36, 12], [12, 28],索引分别是 [0, 1], [1, 2], [2, 3], [3, 4]。

输出向量(由 Y 表示)存储每个 n-gram 的计数;Y[ngram_indexes[i]] 表示第 i 个 n-gram 找到的次数。属性 ngram_indexes 用于确定索引 i 与相应的 n-gram 的输出坐标之间的映射。如果 pool_int64s 是 [94, 17, 17, 36],ngram_indexes 是 [1, 0],ngram_counts=[0, 0],那么 Y[0](Y 中的第一个元素)和 Y[1](Y 中的第二个元素)分别是 [17, 36] 和 [94, 17] 的计数。在 pool_strings/pool_int64s 中找不到的 n-gram 应被忽略,并且不会影响输出。请注意,在生成 n-gram 时,我们可能会考虑所有跳数直到 S。

如果模式是“TF”,则上述示例是正确的。如果模式是“IDF”,所有大于 1 的计数将被截断为 1,并且权重中的第 i 个元素将用于按乘法缩放池中第 i 个 n-gram 的计数。如果模式是“TFIDF”,此运算符首先计算所有 n-gram 的计数,然后用权重属性中的相关值进行缩放。

pool_strings 和 pool_int64s 只能设置其中一个。如果设置了 pool_int64s,输入应该是整数张量。如果设置了 pool_strings,输入必须是字符串张量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
max_gram_length::mlir::IntegerAttr64位有符号整数属性
max_skip_count::mlir::IntegerAttr64位有符号整数属性
min_gram_length::mlir::IntegerAttr64位有符号整数属性
mode::mlir::StringAttr字符串属性
ngram_counts::mlir::ArrayAttr64位整数数组属性
ngram_indexes::mlir::ArrayAttr64位整数数组属性
pool_int64s::mlir::ArrayAttr64位整数数组属性
pool_strings::mlir::ArrayAttr字符串数组属性
weights::mlir::ArrayAttr32位浮点数数组属性

操作数

操作数 描述
X 字符串类型值张量或 32 位无符号整数值张量或 64 位无符号整数值张量

结果

结果 描述
Y 32位浮点值张量

onnx.ThresholdedRelu (ONNXThresholdedReluOp)

ONNX ThresholdedRelu 操作

ThresholdedRelu 接受一个输入数据(Tensor) 并生成一个输出数据 (张量),其中整流线性函数 y = x (当 x > alpha 时),y = 0 (否则)被逐元素应用于张量。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
alpha::mlir::FloatAttr32位浮点属性

操作数

操作数 描述
X bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

结果

结果 描述
Y bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量

onnx.Tile (ONNXTileOp)

ONNX Tile 操作

通过平铺给定张量来构造张量。这与 Numpy 中的 tile 函数相同,但没有广播。例如 A = [[1, 2], [3, 4]], B = [1, 2], tile(A, B) = [[1, 2, 1, 2], [3, 4, 3, 4]]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
repeats 64位无符号整数值张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.TopK (ONNXTopKOp)

ONNX TopK 操作

沿指定轴检索最大的 K 个或最小的 K 个元素。给定形状为 [a_0, a_1, …, a_{n-1}] 的输入张量和整数参数 k,返回两个输出:

对于两个等值,此运算符使用沿轴的索引作为平局分解器。也就是说,索引较小的元素将首先出现。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
largest::mlir::IntegerAttr64位有符号整数属性
sorted::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
K 64位无符号整数值张量

结果

结果 描述
Values 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量
Indices 64位无符号整数值张量

onnx.Transpose (ONNXTransposeOp)

ONNX Transpose 操作

类似于 numpy.transpose 来转置输入张量。例如,当 perm=(1, 0, 2) 时,给定形状为 (1, 2, 3) 的输入张量,输出形状将是 (2, 1, 3)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
perm::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量

结果

结果 描述
transposed 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量

onnx.TreeEnsembleClassifier (ONNXTreeEnsembleClassifierOp)

ONNX TreeEnsembleClassifier 操作

树集成分类器。为 N 个输入中的每个输入返回 top 类。
名为“nodes_X”的属性形成一个元组序列,按索引关联到序列,这些序列的长度必须都相等。这些元组定义了节点。
类似地,所有以“class_”为前缀的字段都是叶子节点的投票元组。一个叶子可能有多个投票,每个投票都由关联的 class_weights 索引加权。
classlabels_strings 或 classlabels_int64s 中只有一个将被定义。class_ids 是此列表中的索引。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
base_values::mlir::ArrayAttr32位浮点数数组属性
class_ids::mlir::ArrayAttr64位整数数组属性
class_nodeids::mlir::ArrayAttr64位整数数组属性
class_treeids::mlir::ArrayAttr64位整数数组属性
class_weights::mlir::ArrayAttr32位浮点数数组属性
classlabels_int64s::mlir::ArrayAttr64位整数数组属性
classlabels_strings::mlir::ArrayAttr字符串数组属性
nodes_falsenodeids::mlir::ArrayAttr64位整数数组属性
nodes_featureids::mlir::ArrayAttr64位整数数组属性
nodes_hitrates::mlir::ArrayAttr32位浮点数数组属性
nodes_missing_value_tracks_true::mlir::ArrayAttr64位整数数组属性
nodes_modes::mlir::ArrayAttr字符串数组属性
nodes_nodeids::mlir::ArrayAttr64位整数数组属性
nodes_treeids::mlir::ArrayAttr64位整数数组属性
nodes_truenodeids::mlir::ArrayAttr64位整数数组属性
nodes_values::mlir::ArrayAttr32位浮点数数组属性
post_transform::mlir::StringAttr字符串属性

操作数

操作数 描述
X 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量

结果

结果 描述
Y 字符串类型值张量或64位无符号整数值张量
Z 32位浮点值张量

onnx.TreeEnsembleRegressor (ONNXTreeEnsembleRegressorOp)

ONNX TreeEnsembleRegressor 操作

树集成回归器。为 N 中的每个输入返回回归值。
所有带有 nodes_ 的参数都是树节点元组的字段,假定它们的长度相同,并且索引 i 将跨这些输入解码元组。每个节点 id 每个树 id 只能出现一次。
所有以 target_ 为前缀的字段都是叶子节点的投票元组。
一个叶子可能有多个投票,每个投票都由关联的 target_weights 索引加权。
所有树的节点 ID 都必须从 0 开始,并以 1 递增。
模式枚举是 BRANCH_LEQ, BRANCH_LT, BRANCH_GTE, BRANCH_GT, BRANCH_EQ, BRANCH_NEQ, LEAF

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
aggregate_function::mlir::StringAttr字符串属性
base_values::mlir::ArrayAttr32位浮点数数组属性
n_targets::mlir::IntegerAttr64位有符号整数属性
nodes_falsenodeids::mlir::ArrayAttr64位整数数组属性
nodes_featureids::mlir::ArrayAttr64位整数数组属性
nodes_hitrates::mlir::ArrayAttr32位浮点数数组属性
nodes_missing_value_tracks_true::mlir::ArrayAttr64位整数数组属性
nodes_modes::mlir::ArrayAttr字符串数组属性
nodes_nodeids::mlir::ArrayAttr64位整数数组属性
nodes_treeids::mlir::ArrayAttr64位整数数组属性
nodes_truenodeids::mlir::ArrayAttr64位整数数组属性
nodes_values::mlir::ArrayAttr32位浮点数数组属性
post_transform::mlir::StringAttr字符串属性
target_ids::mlir::ArrayAttr64位整数数组属性
target_nodeids::mlir::ArrayAttr64位整数数组属性
target_treeids::mlir::ArrayAttr64位整数数组属性
target_weights::mlir::ArrayAttr32位浮点数数组属性

操作数

操作数 描述
X 32位浮点值张量或64位浮点值张量或64位无符号整数值张量或32位无符号整数值张量

结果

结果 描述
Y 32位浮点值张量

onnx.Trilu (ONNXTriluOp)

ONNX Trilu 操作

给定一个 2D 矩阵或 2D 矩阵的批次,返回张量的上三角或下三角部分。属性“upper”决定保留上三角还是下三角部分。如果设置为 true,则保留上三角矩阵。否则保留下三角矩阵。属性“upper”的默认值为 true。Trilu 接受一个形状为 [*, N, M] 的输入张量,其中 * 是零个或多个批次维度。上三角部分由对角线 (k) 上方及对角线上的元素组成。下三角部分由对角线下方及对角线上的元素组成。矩阵中的所有其他元素都设置为零。如果 k = 0,则保留主对角线上方/下方及主对角线上的三角部分。如果 k 为正,则保留上三角矩阵,不包括主对角线及其上方的 (k-1) 条对角线。k 值为负时,保留主对角线及其下方 |k| 条对角线。如果 upper 设置为 false,k 值为正时,保留下三角矩阵,包括主对角线及其上方的 k 条对角线。k 值为负时,不包括主对角线及其下方 (|k|-1) 条对角线。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
upper::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
输入 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
k 64位无符号整数值张量或None类型

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Unique (ONNXUniqueOp)

ONNX Unique 操作

查找张量的唯一元素。当提供可选属性“axis”时,将返回沿“axis”切片的唯一子张量。否则,将展平输入张量并返回展平张量的唯一值。

此运算符返回输入张量的唯一值或子张量以及三个可选输出。第一个输出张量“Y”包含输入的所有唯一值或子张量。第二个可选输出张量“indices”包含“Y”元素在“X”中首次出现的位置索引。第三个可选输出张量“inverse_indices”包含“X”元素的对应于“Y”中的索引。第四个可选输出张量“counts”包含“Y”中每个元素在输入中的计数。

输出要么按升序排序,要么可以选择按输入中值首次出现的顺序排序。

https://docs.scipy.org.cn/doc/numpy/reference/generated/numpy.unique.html

示例 1

input_X = [2, 1, 1, 3, 4, 3]
attribute_sorted = 0
attribute_axis = None
output_Y = [2, 1, 3, 4]
output_indices = [0, 1, 3, 4]
output_inverse_indices = [0, 1, 1, 2, 3, 2]
output_counts = [1, 2, 2, 1]

示例 2

input_X = [[1, 3], [2, 3]]
attribute_sorted = 1
attribute_axis = None
output_Y = [1, 2, 3]
output_indices = [0, 2, 1]
output_inverse_indices = [0, 2, 1, 2]
output_counts = [1, 1, 2]

示例 3

input_X = [[1, 0, 0], [1, 0, 0], [2, 3, 4]]
attribute_sorted = 1
attribute_axis = 0
output_Y = [[1, 0, 0], [2, 3, 4]]
output_indices = [0, 2]
output_inverse_indices = [0, 0, 1]
output_counts = [2, 1]

示例 4

input_x = [[[1., 1.], [0., 1.], [2., 1.], [0., 1.]],
            [[1., 1.], [0., 1.], [2., 1.], [0., 1.]]]
attribute_sorted = 1
attribute_axis = 1

为了更好地理解,下面展示了中间数据:输入 x(形状 = (2, 4, 2))沿轴 1 切片有 4 个子张量。

A: [[1, 1], [1, 1]],
   [[0, 1], [0, 1]],
   [[2, 1], [2, 1]],
   [[0, 1], [0, 1]].

有 3 个唯一的子张量。

[[1, 1], [1, 1]],
[[0, 1], [0, 1]],
[[2, 1], [2, 1]].

排序后的唯一子张量。

B: [[0, 1], [0, 1]],
   [[1, 1], [1, 1]],
   [[2, 1], [2, 1]].

output_Y 由 B 构建。

[[[0. 1.], [1. 1.], [2. 1.]],
 [[0. 1.], [1. 1.], [2. 1.]]]

output_indices 用于从 B 映射到 A。

[1, 0, 2]

output_inverse_indices 用于从 A 映射到 B。

[1, 0, 2, 0]

output_counts

[2, 1, 1]

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
::mlir::IntegerAttr64位有符号整数属性
sorted::mlir::IntegerAttr64位有符号整数属性

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
indices 64位无符号整数值张量或None类型
inverse_indices 64位无符号整数值张量或None类型
counts 64位无符号整数值张量或None类型

onnx.Unsqueeze (ONNXUnsqueezeOp)

ONNX Unsqueeze 操作

向输入张量(data)的形状中插入单维条目。接受一个必需的输入 axes,其中包含一个维度索引列表,此运算符将在输出张量(expanded)的相应索引处插入一个值为 1 的维度。

例如,给定一个形状为 [3, 4, 5] 的输入张量(data),则 Unsqueeze(data, axes=[0, 4]) 输出一个张量(expanded),其中包含与 data 相同的数据,但形状为 [1, 3, 4, 5, 1]。

输入 axes 不应包含任何重复项。如果包含重复项,则会引发错误。输出张量(output_rank)的秩是输入张量(data)的秩加上 axes 中值的数量。 axes 中的每个值都应在(包含)范围内 [-output_rank , output_rank - 1]。axes 中值的顺序无关紧要,可以是任何顺序。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量
axes 64位无符号整数值张量

结果

结果 描述
expanded 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量或f8E4M3FN类型值张量或f8E4M3FNUZ类型值张量或f8E5M2类型值张量或f8E5M2FNUZ类型值张量或4位无符号整数值张量或4位无符号整数值张量

onnx.UnsqueezeV11 (ONNXUnsqueezeV11Op)

ONNX Unsqueeze 操作

向输入张量(data)的形状中插入单维条目。接受一个必需的参数 axes,其中包含一个维度索引列表,此运算符将在输出张量(expanded)的相应索引处插入一个值为 1 的维度。

例如:给定一个形状为 [3, 4, 5] 的输入张量(data),则 Unsqueeze(data, axes=[0, 4]) 输出一个张量(expanded),其中包含与 data 相同的数据,但形状为 [1, 3, 4, 5, 1]。

属性 axes 不应包含任何重复项。如果包含重复项,则会引发错误。输出张量(output_rank)的秩是输入张量(data)的秩加上 axes 中值的数量。 axes 中的每个值都应在(包含)范围内 [-output_rank , output_rank - 1]。axes 中值的顺序无关紧要,可以是任何顺序。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
axes::mlir::ArrayAttr64位整数数组属性

操作数

操作数 描述
data 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
expanded 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Upsample (ONNXUpsampleOp)

ONNX Upsample 操作

上采样输入张量。输出张量的每个维度值是:output_dimension = floor(input_dimension * scale)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
mode::mlir::StringAttr字符串属性

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
scales 32位浮点值张量

结果

结果 描述
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.UpsampleV7 (ONNXUpsampleV7Op)

ONNX Upsample 操作

上采样输入张量。输出张量的每个维度值是:output_dimension = floor(input_dimension * scale)。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
mode::mlir::StringAttr字符串属性
scales::mlir::ArrayAttr32位浮点数数组属性

操作数

操作数 描述
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Where (ONNXWhereOp)

ONNX Where 操作

根据条件从 X 或 Y 中返回元素。Where 的行为类似于具有三个参数的 numpy.where

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
condition 1位无符号整数值张量
X 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量
Y 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

结果

结果 描述
输出 8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或8位无符号整数值张量或16位无符号整数值张量或32位无符号整数值张量或64位无符号整数值张量或bfloat16类型值张量或16位浮点值张量或32位浮点值张量或64位浮点值张量或字符串类型值张量或1位无符号整数值张量或具有32位浮点元素的复数类型张量或具有64位浮点元素的复数类型张量

onnx.Xor (ONNXXorOp)

ONNX Xor 操作

执行xor逻辑运算后,逐元素返回输入张量 AB 得到的结果张量(支持 Numpy 风格的广播)。

此运算符支持**多向(即 Numpy 风格)广播**;有关更多详细信息,请参阅文档

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
A 1位无符号整数值张量
B 1位无符号整数值张量

结果

结果 描述
C 1位无符号整数值张量

onnx.Yield (ONNXYieldOp)

ONNX yield 操作

语法

operation ::= `onnx.Yield` attr-dict ($operands^ `:` type($operands))?

onnx.Yield 操作代表 ONNX 子图中的 yield 操作。该操作接受可变数量的操作数,并且不产生任何结果。

此操作不属于标准,旨在协助 onnx-mlir。它终止 ONNXLoop/Scan/IfOp 区域。

特性:AlwaysSpeculatableImplTraitReturnLikeTerminator

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), RegionBranchTerminatorOpInterface

效果: MemoryEffects::Effect{}

操作数

操作数 描述
操作数 任意类型的变长序列

onnx.ZipMap (ONNXZipMapOp)

ONNX ZipMap 操作

根据输入和属性创建一个映射。
值由输入张量提供,而键由属性指定。必须在 classlabels_strings 或 classlabels_int64s 中提供键(但不能同时提供)。
张量的列与属性指定的键一一对应。列数必须等于键数。

特性: AlwaysSpeculatableImplTrait

接口: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), ShapeHelperOpInterface, ShapeInferenceOpInterface

效果: MemoryEffects::Effect{}

属性

属性MLIR 类型描述
classlabels_int64s::mlir::ArrayAttr64位整数数组属性
classlabels_strings::mlir::ArrayAttr字符串数组属性

操作数

操作数 描述
X 32位浮点值张量

结果

结果 描述
Z 字符串类型或 32 位浮点值元组的序列类型或 64 位无符号整数或 32 位浮点值元组的序列类型