ONNX 模型在 MLIR 编译器基础设施中的表示和参考降低
该项目由 onnx维护
托管在 GitHub Pages 上 - 主题由 orderedlist提供
onnx.Abs
(ONNXAbsOp)ONNX Abs 操作
Absolute 接受一个输入数据 (Tensor
特征: 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{}
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Acosh
(ONNXAcoshOp)ONNX Acosh 操作
逐元素计算给定输入张量的双曲反余弦。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
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::FloatAttr | 32 位浮点类型属性 |
epsilon | ::mlir::FloatAttr | 32 位浮点类型属性 |
norm_coefficient | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
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::FloatAttr | 32 位浮点类型属性 |
beta | ::mlir::FloatAttr | 32 位浮点类型属性 |
epsilon | ::mlir::FloatAttr | 32 位浮点类型属性 |
norm_coefficient | ::mlir::FloatAttr | 32 位浮点类型属性 |
norm_coefficient_post | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
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 操作
返回对输入张量 A
和 B
逐元素执行 and
逻辑运算后得到的张量(支持 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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
select_last_index | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
select_last_index | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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{}
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Asinh
(ONNXAsinhOp)ONNX Asinh 操作
逐元素计算给定输入张量的双曲反正弦。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Atan
(ONNXAtanOp)ONNX Atan 操作
逐元素计算给定输入张量的反正切(正切的反函数)。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Atanh
(ONNXAtanhOp)ONNX Atanh 操作
逐元素计算给定输入张量的双曲反正切。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.AveragePool
(ONNXAveragePoolOp)ONNX AveragePool 操作
AveragePool 接收一个输入张量 X,并根据内核大小、步幅大小和填充长度对张量应用平均池化。平均池化包括根据内核大小计算输入张量子集的所有值的平均值,并将数据下采样到输出张量 Y 中以进行进一步处理。输出空间形状的计算方式不同,具体取决于是否使用显式填充(其中使用填充),还是使用自动填充(其中使用 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_UPPER
或 SAME_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::IntegerAttr | 64 位有符号整数类型属性 |
count_include_pad | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
dilations | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
kernel_shape | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
pads | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
strides | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
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 CD1D2 ..*Dn)。该操作符具有 **可选** 输入/输出。有关可选参数表示的更多详细信息,请查看 文档。空字符串可用于实际参数名称的位置,以指示缺少参数。尾随可选参数(那些后面没有实际参数的)也可以简单地省略。
此操作不是标准的一部分,而是为了帮助 onnx-mlir 添加的。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
epsilon | ::mlir::FloatAttr | 32 位浮点类型属性 |
momentum | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
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
对于之前的(已弃用)非空间情况,建议实现者将输入形状展平成 (N x C * D1 * D2 * … * Dn) 然后再进行 BatchNormalization 操作。此运算符具有 **可选** 的输入/输出。有关可选参数表示的更多详细信息,请参见 文档。空字符串可用于表示缺失参数的实际参数名称。尾随可选参数(那些后面没有实际参数的可选参数)也可以省略。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
epsilon | ::mlir::FloatAttr | 32 位浮点类型属性 |
momentum | ::mlir::FloatAttr | 32 位浮点类型属性 |
training_mode | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 类型值张量或无类型 |
running_var |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量或无类型 |
onnx.Bernoulli
(ONNXBernoulliOp)ONNX 伯努利操作
从伯努利分布中抽取二元随机数(0 或 1)。输入张量应包含一个张量,其中包含用于抽取二元随机数的概率 p([0,1] 范围内的值),其中以概率 p 生成 1 的输出,以概率 (1-p) 生成 0 的输出。
此运算符是非确定性的,可能在不同的实现中产生不同的值(即使指定了种子)。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
dtype | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
seed | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量或 8 位无符号整数型值张量或 16 位无符号整数型值张量或 32 位无符号整数型值张量或 64 位无符号整数型值张量或 8 位无符号整数型值张量或 16 位无符号整数型值张量或 32 位无符号整数型值张量或 64 位无符号整数型值张量或 1 位无符号整数型值张量 |
onnx.Binarizer
(ONNXBinarizerOp)ONNX 二值化操作
根据与阈值比较的结果,将输入张量的值逐元素映射到 0 或 1。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
threshold | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
X |
32 位浮点型值张量或 64 位浮点型值张量或 64 位无符号整数型值张量或 32 位无符号整数型值张量 |
结果 | 描述 |
---|---|
Y |
32 位浮点型值张量或 64 位浮点型值张量或 64 位无符号整数型值张量或 32 位无符号整数型值张量 |
onnx.BitShift
(ONNXBitShiftOp)ONNX 位移操作
位移运算符执行逐元素运算。对于每个输入元素,如果属性 "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 按位与操作
返回对输入张量 A
和 B
逐元素执行按位 and
操作的结果张量(支持 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 按位非操作
返回输入张量的按位非逐元素运算。
特征: 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 按位或操作
返回对输入张量 A
和 B
逐元素执行按位 or
操作的结果张量(支持 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 按位异或操作
返回对输入张量 A
和 B
逐元素执行按位 xor
操作的结果张量(支持 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 Blackman 窗口操作
根据论文 https://ieeexplore.ieee.org/document/1455106 中的描述生成 Blackman 窗口。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
output_datatype | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
periodic | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
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::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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"。当从数值张量强制转换为字符串张量时,将使用纯浮点表示(例如 "314.15926")。转换非数值文字字符串(例如 "Hello World!")是未定义的行为。将表示浮点算术值的字符串(例如 "2.718")转换为 INT 的情况是未定义的行为。
始终允许从数值类型转换为任何数值类型。用户必须注意由于两种类型之间的范围差异而导致的精度损失和值变化。例如,64 位浮点数 3.1415926459 可能被舍入为 32 位浮点数 3.141592。同样,将整数 36 转换为布尔值可能会产生 1,因为我们截断了无法存储在目标类型中的位。
更详细地说,如果目标类型不是 float 8 类型,则数值类型之间的转换应遵循以下规则。
{1.0, 0.0}
。{1, 0}
。Float 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::IntegerAttr | 64 位有符号整数类型属性 |
to | ::mlir::TypeAttr | 任何类型属性 |
操作数 | 描述 |
---|---|
输入 |
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.CategoryMapper
(ONNXCategoryMapperOp)ONNX 类别映射器操作
将字符串转换为整数,反之亦然。
使用两个长度相等的序列在整数和字符串之间进行映射,字符串和整数在同一索引处详细说明映射。
每个运算符都会根据提供的哪个默认值属性将整数转换为字符串或将字符串转换为整数。只能定义一个默认值属性。
如果设置了字符串默认值,它将把整数转换为字符串。如果设置了 int 默认值,它将把字符串转换为整数。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
cats_int64s | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
cats_strings | ::mlir::ArrayAttr | 字符串数组属性 |
default_int64 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
default_string | ::mlir::StringAttr | 字符串类型属性 |
操作数 | 描述 |
---|---|
X |
字符串类型值张量或 64 位无符号整数型值张量 |
结果 | 描述 |
---|---|
Y |
字符串类型值张量或 64 位无符号整数型值张量 |
onnx.Ceil
(ONNXCeilOp)ONNX 向上取整运算
向上取整运算接收一个输入数据(张量
特征: 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::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
X |
32 位浮点值张量 |
结果 | 描述 |
---|---|
Y |
32 位浮点值张量 |
onnx.CenterCropPad
(ONNXCenterCropPadOp)ONNX 中心裁剪填充运算
将输入裁剪或填充到给定的尺寸。
可以为 axes
的子集指定裁剪/填充维度。未指定的维度将不会被裁剪或填充。
如果输入维度大于裁剪形状,则从输入中提取一个居中的裁剪窗口。如果输入维度小于裁剪形状,则在输入的两侧等量填充,以便输入在输出中居中。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
输入数据 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
形状 |
32 位无符号整数型值张量或 64 位无符号整数型值张量 |
结果 | 描述 |
---|---|
输出数据 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
onnx.Clip
(ONNXClipOp)ONNX 裁剪运算
裁剪运算将给定的输入限制在某个区间内。该区间由输入 '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 类型张量 |
最小值 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量或 无类型 |
最大值 |
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.ClipV11
(ONNXClipV11Op)ONNX 裁剪运算
裁剪运算将给定的输入限制在某个区间内。该区间由输入 'min' 和 'max' 指定。它们分别默认为 numeric_limits::lowest() 和 numeric_limits::max()。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
最小值 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
最大值 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.ClipV12
(ONNXClipV12Op)ONNX 裁剪运算
裁剪运算将给定的输入限制在某个区间内。该区间由输入 '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 位浮点类型张量 |
最小值 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
最大值 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
结果 | 描述 |
---|---|
输出 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.ClipV6
(ONNXClipV6Op)ONNX 裁剪运算
裁剪运算将给定的输入限制在某个区间内。该区间由参数 'min' 和 'max' 指定。它们分别默认为 numeric_limits::lowest() 和 numeric_limits::max()。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
最大值 | ::mlir::FloatAttr | 32 位浮点类型属性 |
最小值 | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
输入 |
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::ArrayAttr | 64 位整数类型数组属性 |
pads | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
strides | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
输入 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
图像形状 |
64 位无符号整数类型张量 |
块形状 |
64 位无符号整数类型张量 |
结果 | 描述 |
---|---|
输出 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
onnx.Compress
(ONNXCompressOp)ONNX 压缩运算
沿给定轴从输入张量中选择切片,其中条件对每个轴索引求值为 True。如果未提供轴,则在选择元素之前先将输入展平。压缩的行为类似于 numpy.compress:https://docs.scipy.org.cn/doc/numpy/reference/generated/numpy.compress.html
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
条件 |
1 位无符号整数类型张量 |
结果 | 描述 |
---|---|
输出 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
onnx.ConcatFromSequence
(ONNXConcatFromSequenceOp)ONNX 从序列中连接运算
将一系列张量连接成一个单一的张量。所有输入张量必须具有相同的形状,除了要连接的轴的维度大小。默认情况下,'new_axis' 为 0,其行为类似于 numpy.concatenate。当 'new_axis' 为 1 时,其行为类似于 numpy.stack。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
新轴 | ::mlir::IntegerAttr | 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.Concat
(ONNXConcatOp)ONNX 连接运算
将一系列张量连接成一个单一的张量。所有输入张量必须具有相同的形状,除了要连接的轴的维度大小。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
inputs |
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.ConcatShapeTranspose
(ONNXConcatShapeTransposeOp)ONNX 合并操作
将以下一系列操作合并成一个操作: v1 = onnx.concat v2 = onnx.shape(v1) v3 = onnx.transpose(v1)
此操作不是标准的一部分,而是为了帮助 onnx-mlir 添加的。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
结束 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
开始 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
置换 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
inputs |
8 位无符号整数类型张量变长参数或 16 位无符号整数类型张量变长参数或 32 位无符号整数类型张量变长参数或 64 位无符号整数类型张量变长参数或 8 位无符号整数类型张量变长参数或 16 位无符号整数类型张量变长参数或 32 位无符号整数类型张量变长参数或 64 位无符号整数类型张量变长参数或 bfloat16 类型张量变长参数或 16 位浮点类型张量变长参数或 32 位浮点类型张量变长参数或 64 位浮点类型张量变长参数或 字符串类型张量变长参数或 1 位无符号整数类型张量变长参数或 32 位浮点元素复数类型张量变长参数 或 64 位浮点元素复数类型张量变长参数 |
结果 | 描述 |
---|---|
形状 |
64 位无符号整数类型张量 |
转置 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
onnx.ConstantOfShape
(ONNXConstantOfShapeOp)ONNX 常量形状运算
生成具有给定值和形状的张量。
特征: AlwaysSpeculatableImplTrait
接口:ConditionallySpeculatable
、NoMemoryEffect (MemoryEffectOpInterface)
、ResultTypeInferenceOpInterface
、ShapeHelperOpInterface
、ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
价值 | ::mlir::Attribute | 任何属性 |
操作数 | 描述 |
---|---|
输入 |
64 位无符号整数类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 1 位无符号整数类型张量或 bfloat16 类型张量或 f8E4M3FN 类型张量或 f8E4M3FNUZ 类型张量或 f8E5M2 类型张量或 f8E5M2FNUZ 类型张量 |
onnx.Constant
(ONNXConstantOp)ONNX 常量运算
此运算符产生一个常量张量。必须指定提供的属性中恰好一个,即 value、sparse_value 或 value_*。
特征:AlwaysSpeculatableImplTrait
, ConstantLike
接口:ConditionallySpeculatable
、NoMemoryEffect (MemoryEffectOpInterface)
、ResultTypeInferenceOpInterface
、ShapeHelperOpInterface
、ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
稀疏值 | ::mlir::Attribute | 任何属性 |
价值 | ::mlir::Attribute | 任何属性 |
值浮点型 | ::mlir::FloatAttr | 32 位浮点类型属性 |
值浮点型数组 | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
值整型 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
值整型数组 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
值字符串 | ::mlir::StringAttr | 字符串类型属性 |
值字符串数组 | ::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 整数卷积运算
整数卷积运算消耗一个输入张量、它的零点、一个滤波器和它的零点,并计算输出。乘积永远不能溢出。累加可能溢出当且仅当在 32 位中。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
auto_pad | ::mlir::StringAttr | 字符串类型属性 |
dilations | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
组 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
kernel_shape | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
pads | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
strides | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
x |
8 位无符号整数类型张量或 8 位无符号整数类型张量 |
w |
8 位无符号整数类型张量或 8 位无符号整数类型张量 |
x 零点 |
8 位无符号整数类型张量或 8 位无符号整数类型张量或 无类型 |
w 零点 |
8 位无符号整数类型张量或 8 位无符号整数类型张量或 无类型 |
结果 | 描述 |
---|---|
y |
32 位无符号整数类型张量 |
onnx.Conv
(ONNXConvOp)ONNX 卷积运算
卷积运算消耗一个输入张量和一个滤波器,并计算输出。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
auto_pad | ::mlir::StringAttr | 字符串类型属性 |
dilations | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
组 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
kernel_shape | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
pads | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
strides | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
W |
16 位浮点类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
B |
16 位浮点类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.ConvTranspose
(ONNXConvTransposeOp)ONNX 反卷积操作
反卷积操作接受一个输入张量和一个滤波器,并计算输出。
如果提供了 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,在这种情况下,pads 值将使用以下公式自动生成
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::ArrayAttr | 64 位整数类型数组属性 |
组 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
kernel_shape | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
output_padding | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
output_shape | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
pads | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
strides | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
W |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
B |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Cos
(ONNXCosOp)ONNX 余弦操作
逐元素计算给定输入张量的余弦值。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Cosh
(ONNXCoshOp)ONNX 双曲余弦操作
逐元素计算给定输入张量的双曲余弦值。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.CumSum
(ONNXCumSumOp)ONNX 累加操作
沿给定轴执行输入元素的累加。默认情况下,它将执行包含式累加,这意味着第一个元素将被直接复制。通过 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::IntegerAttr | 64 位有符号整数类型属性 |
reverse | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
x |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
axis |
32 位无符号整数型值张量或 64 位无符号整数型值张量 |
结果 | 描述 |
---|---|
y |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
onnx.Custom
(ONNXCustomOp)ONNX 自定义操作
CustomOp 不是 onnx 标准中定义的操作,它被添加来支持可以被转换或最终调用用户定义的外部函数的操作扩展。
它允许调用用户定义的操作,其中一个必需的属性是命名操作的字符串。其他输入将传递给用户操作。
输入和输出的数量可以变化。
输入和输出都允许使用 NoneType,因为 CustomOp 可能会在外部函数调用中需要固定数量的输入/输出。
除了传递给用户定义操作的值之外,还引入了一些属性来帮助分析和转换 CustomOp。
由于编译器没有定义 CustomOp 的语义,因此 onnx-mlir 无法推断其输出的形状。因此,引入了特定属性来指定如何对 CustomOp 执行形状推断。这些属性是:‘inputs_for_infer’:可选。用于形状推断的输入的索引。索引的值应为 [0,输入数量)。如果没有指定,CustomOp 的所有输入都将用于形状推断。‘shape_infer_pattern’:可选。指定如何将形状信息从输入(可能受 inputs_for_infer 限制)传播到输出。当前支持的模式是 SameAs
,MDBroadcast
。‘output_element_type’:可选。输出张量的元素类型。如果没有指定,则遵循形状推断模式行为。通常使用第一个输入的元素类型。CustomOp 的每个实例都可以拥有自己的形状推断属性,允许进行自定义。但是,具有相同 function_name 的 CustomOp 通常在形状推断方面表现相似,因此具有相同的属性。
ONNX 操作的现有形状推断模式被重用于 CustomOp,其形状推断的多态性基于其属性值。由于 ONNX 操作的当前实现,具有指定形状推断属性的 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::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
inputs |
任何类型的张量的可变参数或任何类型的 memref 或无类型 |
结果 | 描述 |
---|---|
outputs |
任何类型的张量的可变参数或任何类型的 memref 或无类型 |
onnx.DFT
(ONNXDFTOp)ONNX DFT 操作
计算输入的离散傅里叶变换 (DFT)。
假设输入的形状为 [M, N]
,其中 N
是 DFT 计算的维度,M
表示概念上的“所有其他维度”,形状为 [M, N]
的 DFT y[m, k]
定义为
逆变换定义为
\[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::IntegerAttr | 64 位有符号整数类型属性 |
onesided | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
dft_length |
32 位有符号整数类型张量或 64 位有符号整数类型张量或无类型 |
axis |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
输出 |
bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.DFTV17
(ONNXDFTV17Op)ONNX DFT 操作
计算输入的离散傅里叶变换。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
inverse | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
onesided | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
dft_length |
32 位有符号整数类型张量或 64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
输出 |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
onnx.DeformConv
(ONNXDeformConvOp)ONNX 可变形卷积操作
执行可变形卷积,如 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::ArrayAttr | 64 位整数类型数组属性 |
组 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
kernel_shape | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
offset_group | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
pads | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
strides | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
W |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
offset |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
B |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
mask |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.DepthToSpace
(ONNXDepthToSpaceOp)ONNX 深度到空间操作
DepthToSpace 将数据从深度重新排列(置换)到空间数据块中。这是 SpaceToDepth 的逆变换。更具体地说,此操作输出输入张量的副本,其中深度维度的值将移动到空间块中以形成高度和宽度维度。默认情况下,mode
= DCR
。在 DCR 模式下,输入张量的深度维度的元素将按以下顺序重新排列:深度、列,然后是行。输出 y 由以下输入 x 计算得出
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 由以下输入 x 计算得出
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::IntegerAttr | 64 位有符号整数类型属性 |
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 线性反量化操作
线性反量化操作。它使用量化张量、比例和零点来计算全精度张量。反量化公式为 y = (x - x_zero_point) * x_scale
。 x_scale
和 x_zero_point
必须具有相同的形状,并且可以是标量(用于逐张量/逐层量化),也可以是一维张量(用于逐轴量化)。 x_zero_point
和 x
必须具有相同的类型。 x
和 y
必须具有相同的形状。在反量化 int32 的情况下,没有零点(零点应该为 0)。在 float8e4m3fn、float8e4m3fnuz、float8e5m2、float8e5m2fnuz 量化的情况下,通常不使用 zero-point
,但反量化公式为了保持一致性而保持不变,并且 ‘x_scale’ 仍然决定输出类型。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
x |
8 位有符号整数类型张量或 8 位无符号整数类型张量或 32 位有符号整数类型张量或 f8E4M3FN 类型张量或 f8E4M3FNUZ 类型张量或 f8E5M2 类型张量或 f8E5M2FNUZ 类型张量 |
x_scale |
32 位浮点类型张量或 16 位浮点类型张量或 bfloat16 类型张量 |
x 零点 |
8 位有符号整数类型张量或 8 位无符号整数类型张量或 32 位有符号整数类型张量或 f8E4M3FN 类型张量或 f8E4M3FNUZ 类型张量或 f8E5M2 类型张量或 f8E5M2FNUZ 类型张量或无类型 |
结果 | 描述 |
---|---|
y |
32 位浮点类型张量或 16 位浮点类型张量或 bfloat16 类型张量 |
onnx.Det
(ONNXDetOp)ONNX 行列式操作
Det 计算方阵或方阵批次的行列式。Det 接受一个形状为 [*, M, M]
的输入张量,其中 *
是零个或多个批次维度,最内层的两个维度形成方阵。输出是一个形状为 [*]
的张量,包含所有输入子矩阵的行列式。例如,当输入为二维时,输出是一个标量(形状为空:[]
)。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.DictVectorizer
(ONNXDictVectorizerOp)ONNX 字典向量化操作
使用索引映射将字典转换为数组。
给定一个字典,每个键将在对应于键类型的词汇表属性中查找。找到键的词汇表数组中的索引将用于索引输出一维张量 ‘Y’ 并向其中插入字典 ‘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::ArrayAttr | 64 位整数类型数组属性 |
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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
group_id | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
结果 | 描述 |
---|---|
dim |
64 位无符号整数类型张量 |
onnx.Div
(ONNXDivOp)ONNX 除法操作
执行逐元素二元除法(支持 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 丢弃操作
丢弃操作接受一个浮点型张量输入,一个可选的比率输入(浮点型标量)和一个可选的训练模式输入(布尔型标量)。它生成两个张量输出,输出(浮点型张量)和掩码(可选 Tensor<bool>
)。如果 training_mode
为真,则输出 Y 将是随机丢弃;请注意,此丢弃操作按以下等式缩放掩码输入数据,因此,要将训练后的模型转换为推理模式,用户可以简单地不传递 training_mode
输入或将其设置为 false。
output = scale * data * mask,
其中
scale = 1. / (1. - ratio).
此操作具有 **可选** 输入/输出。有关可选参数表示形式的更多详细信息,请参阅 文档。空字符串可用于代替实际参数的名称,以指示缺少参数。尾随可选参数(后面没有存在的参数)也可以简单地省略。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
seed | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
ratio |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
training_mode |
1 位无符号整数值张量或无类型。 |
结果 | 描述 |
---|---|
输出 |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
mask |
1 位无符号整数值张量或无类型。 |
onnx.DynamicQuantizeLinear
(ONNXDynamicQuantizeLinearOp)ONNX 动态线性量化操作
一个用于融合 FP32 输入数据的 Scale、Zero Point 和 FP32->8Bit 转换计算的函数。对于给定的 FP32 输入,输出 Scale、ZeroPoint 和量化输入。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 操作使用爱因斯坦求和约定对张量序列上的代数张量运算进行评估。等式字符串包含以逗号分隔的小写字母序列。每个项对应一个操作数张量,项中的字符对应操作数维度。
此序列后可以接 “->” 以分隔等式的左侧和右侧。如果等式包含 “->” 后接右侧,则执行爱因斯坦求和的显式(非经典)形式,右侧索引指示输出张量维度。在其他情况下,输出索引(隐式)设置为出现在等式中恰好出现一次的索引的按字母顺序排序的序列。
当维度字符在左侧重复时,它表示沿着该维度进行求和。
等式可以包含省略号(“...”)以启用广播。省略号必须表示固定数量的维度。具体来说,等式中每个省略号的出现必须表示相同数量的维度。右侧最多可以包含一个省略号。在隐式模式下,省略号维度设置为输出的开头。等式字符串可以包含空格 (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 位浮点值张量 |
结果 | 描述 |
---|---|
输出 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Elu
(ONNXEluOp)ONNX Elu 操作
Elu 接受一个输入数据 (Tensor
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
alpha | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.EntryPoint
(ONNXEntryPointOp)指示 ONNX 入口点
“onnx.EntryPoint” 函数指示 ONNX 模型的主入口点。
此操作不是标准的一部分,而是为了帮助 onnx-mlir 添加的。
属性 | MLIR 类型 | 描述 |
---|---|---|
func | ::mlir::SymbolRefAttr | 符号引用属性 |
onnx.Equal
(ONNXEqualOp)ONNX 等于操作
返回对输入张量 A
和 B
逐元素执行 等于
逻辑运算后产生的张量(支持 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 扩展操作
根据给定形状和广播规则广播输入张量。广播规则类似于 numpy.array(input) * numpy.ones(shape):维度右对齐;两个对应维度必须具有相同的值,或者其中一个等于 1。此外,此操作类似于 numpy.broadcast_to(input, shape),但主要区别在于 numpy.broadcast_to() 不允许形状小于 input.size()。输出.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 位浮点元素复数类型张量 |
形状 |
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::IntegerAttr | 64 位有符号整数类型属性 |
k | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
16 位浮点值张量,或 32 位浮点值张量,或 64 位浮点值张量,或 8 位有符号整数值张量,或 16 位有符号整数值张量,或 32 位有符号整数值张量,或 64 位有符号整数值张量,或 8 位无符号整数值张量,或 16 位无符号整数值张量,或 32 位无符号整数值张量,或 64 位无符号整数值张量,或 1 位有符号整数值张量。 |
结果 | 描述 |
---|---|
输出 |
16 位浮点值张量,或 32 位浮点值张量,或 64 位浮点值张量,或 8 位有符号整数值张量,或 16 位有符号整数值张量,或 32 位有符号整数值张量,或 64 位有符号整数值张量,或 8 位无符号整数值张量,或 16 位无符号整数值张量,或 32 位无符号整数值张量,或 64 位无符号整数值张量,或 1 位有符号整数值张量。 |
onnx.FeatureVectorizer
(ONNXFeatureVectorizerOp)ONNX 特征向量化器操作
将输入张量连接成一个连续的输出。
所有输入形状均为 2-D,并且沿第二维连接。1-D 张量被视为 [1,C]。输入被复制到输出中,保持输入参数的顺序。
所有输入必须是整数或浮点数,而输出将全部是浮点值。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
inputdimensions | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
X |
32 位有符号整数值张量的可变参数,或 64 位有符号整数值张量,或 32 位浮点值张量,或 64 位浮点值张量 |
结果 | 描述 |
---|---|
Y |
32 位浮点值张量 |
onnx.Flatten
(ONNXFlattenOp)ONNX 展平操作
将输入张量展平成一个 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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 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.Floor
(ONNXFloorOp)ONNX 下取整操作
下取整操作接受一个输入数据 (Tensor
特征: 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)来支持。
符号
X
- 输入张量z
- 更新门r
- 重置门h
- 隐藏门t
- 时间步长(t-1 表示前一时间步长)W[zrh]
- 更新、重置和隐藏门的 W 参数权重矩阵R[zrh]
- 更新、重置和隐藏门的 R 循环权重矩阵Wb[zrh]
- 更新、重置和隐藏门的 W 偏差向量Rb[zrh]
- 更新、重置和隐藏门的 R 偏差向量WB[zrh]
- 反向更新、重置和隐藏门的 W 参数权重矩阵RB[zrh]
- 反向更新、重置和隐藏门的 R 循环权重矩阵WBb[zrh]
- 反向更新、重置和隐藏门的 W 偏差向量RBb[zrh]
- 反向更新、重置和隐藏门的 R 偏差向量H
- 隐藏状态num_directions
- 如果 direction == 双向则为 2,否则为 1激活函数
注意:以下是可选的
Softsign(x) - x/(1 + | x | ) |
方程 (默认:f=Sigmoid,g=Tanh)
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
activation_alpha | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
activation_beta | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
activations | ::mlir::ArrayAttr | 字符串数组属性 |
clip | ::mlir::FloatAttr | 32 位浮点类型属性 |
direction | ::mlir::StringAttr | 字符串类型属性 |
hidden_size | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
layout | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
linear_before_reset | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
W |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
R |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
B |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
sequence_lens |
32 位无符号整数类型值的张量或无类型 |
initial_h |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
Y_h |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
onnx.GatherElements
(ONNXGatherElementsOp)ONNX GatherElements 操作
GatherElements 接受两个输入 data
和 indices
,它们具有相同的等级 r >= 1,以及一个可选属性 axis
,它标识 data
的一个轴(默认情况下,最外层的轴,即轴 0)。 这是一个索引操作,它通过在由 indices
张量元素确定的索引位置索引输入数据张量来生成其输出。 它的输出形状与 indices
的形状相同,并且由 indices
中的每个元素的一个值(从 data
中收集)组成。
例如,在 3-D 案例(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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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
的索引元组,其中每个元素定义 data
的一个切片
batch_dims
(表示为 b
)是一个整数,指示批处理维度的数量,即 data
张量和 indices
的前 b
个维度表示批处理,收集从 b+1
维度开始。
关于输入等级和形状的一些要点
1) r >= 1 和 q >= 1 应得到遵守。 等级 r
和 q
之间没有要满足的依赖条件
2) indices
张量和 data
张量的形状的前 b
个维度必须相等。
3) 应遵守 b < min(q, r)。
4) indices_shape[-1]
的值应在 1(含)和等级 r-b
(含)之间
5) 应期望 indices
中的所有值都在沿着大小为 s
的轴的边界 [-s, s-1] 内(即)-data_shape[i] <= indices[...,i] <= data_shape[i] - 1
。 如果任何索引值超出范围,则会发生错误。
输出计算如下
输出张量是通过将 indices
张量中的每个索引元组映射到输入 data
的相应切片而获得的。
1) 如果 indices_shape[-1] > r-b
=> 错误条件
2) 如果 indices_shape[-1] == r-b
,由于 indices
的等级为 q
,因此可以将 indices
视为包含维数为 r-b
的 1-D 张量的 N
个 (q-b-1)
维张量,其中 N
是一个整数,等于 indices_shape 的批处理维度中 1 和所有元素的乘积。 让我们将每个这样的 r-b
秩张量视为 indices_slice
。 与 data[0:b-1,indices_slice]
相对应的每个标量值都将填充到 (q-b-1)
维张量的对应位置,以形成 output
张量(以下示例 1)
3) 如果 indices_shape[-1] < r-b
,由于 indices
的等级为 q
,因此可以将 indices
视为包含维数为 < r-b
的 1-D 张量的 N
个 (q-b-1)
维张量。 让我们将每个这样的张量视为 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::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 接受一个输入数据(张量
特征: 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::FloatAttr | 32 位浮点类型属性 |
beta | ::mlir::FloatAttr | 32 位浮点类型属性 |
transA | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
transB | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 类型张量或无类型张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点数类型值的张量或 32 位浮点数类型值的张量或 64 位浮点数类型值的张量或 32 位无符号整数类型值的张量或 64 位无符号整数类型值的张量或 32 位无符号整数类型值的张量或 64 位无符号整数类型值的张量或 bfloat16 类型值的张量 |
onnx.GlobalAveragePool
(ONNXGlobalAveragePoolOp)ONNX 全局平均池化操作
全局平均池化操作接收输入张量 X,并对同一通道内的值应用平均池化。这等同于内核大小等于输入张量空间维度的平均池化。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.GlobalLpPool
(ONNXGlobalLpPoolOp)ONNX 全局 Lp 池化操作
全局 Lp 池化操作接收输入张量 X,并对同一通道内的值应用 lp 池化。这等同于内核大小等于输入张量空间维度的 Lp 池化。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
p | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
X |
bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.GlobalMaxPool
(ONNXGlobalMaxPoolOp)ONNX 全局最大池化操作
全局最大池化操作接收输入张量 X,并对同一通道内的值应用最大池化。这等同于内核大小等于输入张量空间维度的最大池化。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Gradient
(ONNXGradientOp)ONNX 梯度操作
梯度操作计算特定张量相对于其他一些张量的偏导数。该操作广泛用于基于梯度的训练算法。为了说明其用法,让我们考虑一个计算图,
X -----.
|
v
W --> Conv --> H --> Gemm --> Y
^
|
Z
,其中 W 和 Z 是可训练的张量。请注意,为了简化起见,操作的属性被省略了。令 dY/dW (dY/dZ) 为 Y 相对于 W (Z) 的梯度。用户可以通过插入梯度操作符来形成另一个图,如下所示。
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" 中可微分变量的梯度,因此该梯度仅输出 dY/dW 和 dY/dZ。请注意,"H" 不能出现在 "xs" 和 "zs" 中。原因是 "H" 可以由张量 "W" 和 "X" 决定,因此 "H" 不是独立变量。
所有输出都是可选的。例如,如果需要,用户可以将空字符串分配给该梯度的第一个输出名称,以跳过 dY/dW 的生成。请注意,可选输出的概念也可以在 ONNX 的 RNN、GRU 和 LSTM 中找到。
梯度操作符可以计算相对于中间张量的导数。例如,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)
可以使用梯度操作符来表示高阶微分。例如,给定以下线性模型
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" 中命名的张量定义了微分计算图,而梯度节点的输入定义了计算梯度的值。我们可以将不同的张量馈送到识别的图中。例如,可以通过将该值作为输入提供给梯度节点,来计算 Y 相对于 H 在特定 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)
当梯度的输入是 "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 位浮点数元素的复数类型张量的可变参数列表 |
结果 | 描述 |
---|---|
输出 |
16 位浮点数张量或 32 位浮点数张量或 64 位浮点数张量的可变参数列表 |
onnx.Greater
(ONNXGreaterOp)ONNX 大于操作
返回对输入张量 A
和 B
(支持 Numpy 样式广播)逐元素执行 greater
逻辑运算的结果张量。
该操作符支持 **多方向(即 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 大于或等于操作
返回对输入张量 A
和 B
(支持 Numpy 样式广播)逐元素执行 greater_equal
逻辑运算的结果张量。
该操作符支持 **多方向(即 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 网格采样操作
给定输入 X
和流场 grid
,使用 X
值和来自 grid
的像素位置来计算输出 Y
。目前,仅支持空间(4 维)输入。对于形状为 (N, C, H, W) 的输入 X
和形状为 (N, H_out, W_out, 2) 的 grid
,输出 Y
将具有形状 (N, C, H_out, W_out)。
张量 X
包含 H×W 二维图像中正方形像素中心的的值。张量 grid
描述了使用指定的插值方法(模式)和填充模式(用于落在二维图像之外的网格位置)来计算输出 Y
的归一化位置。
grid[N, H_out, W_out]
中的元素是大小为 2 的向量,指定 X
的二维空间中的位置。它们用于插值 Y[N, C, H_out, W_out]
的输出值。
网格采样操作通常用于在 空间变换网络 中执行网格生成器和采样器。另请参阅 torch.nn.functional.grid_sample。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
align_corners | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
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 组规范化操作
组规范化函数。按照论文 https://arxiv.org/abs/1803.08494 中所述进行组规范化
该操作根据以下公式变换输入
y = scale * (x - mean) / sqrt(variance + epsilon) + bias,
其中平均值和方差是针对每个通道组的每个实例计算的,并且应该为每个通道组指定 scale
和 bias
。组数 num_groups
应该可以被通道数整除,以便每个组的通道数相等。
整个计算有两个阶段:第一阶段将元素归一化为每个组的每个实例的零均值和单位方差,第二阶段对第一阶段的结果进行缩放和平移。第一阶段使用的浮点精度由 stash_type
属性决定。例如,如果 stash_type
为 1,则操作符将所有输入变量转换为 32 位浮点数,执行计算,最后将归一化的结果转换回 X
的原始类型。第二阶段不依赖于 stash_type
。
当组数与通道数相同时,该操作符等效于实例规范化。当只有一个组时,该操作符等效于层规范化。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
epsilon | ::mlir::FloatAttr | 32 位浮点类型属性 |
num_groups | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
stash_type | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
X |
bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
scale |
bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
bias |
bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.GroupNormalizationV18
(ONNXGroupNormalizationV18Op)ONNX 组规范化操作
组规范化函数。按照论文 https://arxiv.org/abs/1803.08494 中所述进行组规范化
该操作根据以下公式变换输入
y = scale * (x - mean) / sqrt(variance + epsilon) + bias,
其中平均值和方差是针对每个通道组的每个实例计算的,并且应该为每个通道组指定 scale
和 bias
。组数 num_groups
应该可以被通道数整除,以便每个组的通道数相等。
当组数与通道数相同时,该操作符等效于实例规范化。当只有一个组时,该操作符等效于层规范化。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
epsilon | ::mlir::FloatAttr | 32 位浮点类型属性 |
num_groups | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
scale |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
bias |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
onnx.HammingWindow
(ONNXHammingWindowOp)ONNX 汉明窗操作
根据论文 https://ieeexplore.ieee.org/document/1455106 生成汉明窗。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
output_datatype | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
periodic | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
size |
32 位无符号整数型值张量或 64 位无符号整数型值张量 |
结果 | 描述 |
---|---|
输出 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位有符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
onnx.HannWindow
(ONNXHannWindowOp)ONNX 汉宁窗操作
根据论文 https://ieeexplore.ieee.org/document/1455106 生成汉宁窗。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
output_datatype | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
periodic | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
size |
32 位无符号整数型值张量或 64 位无符号整数型值张量 |
结果 | 描述 |
---|---|
输出 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位有符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
onnx.HardSigmoid
(ONNXHardSigmoidOp)ONNX 硬 sigmoid 操作
硬 sigmoid 接受一个输入数据(张量
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
alpha | ::mlir::FloatAttr | 32 位浮点类型属性 |
beta | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.HardSwish
(ONNXHardSwishOp)ONNX 硬 swish 操作
硬 swish 接受一个输入数据(张量
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Hardmax
(ONNXHardmaxOp)ONNX 硬最大值操作
该操作符计算给定输入的硬最大值
Hardmax(输入中的元素,轴) = 1(如果该元素是沿指定轴的第一个最大值),否则为 0
“轴”属性指示将执行硬最大值的维度。输出张量具有相同的形状,并包含相应输入的硬最大值。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
onnx.Identity
(ONNXIdentityOp)ONNX 恒等操作
恒等操作
特征: 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 类型张量或 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 位无符号整数张量或 bfloat16 类型张量或 16 位浮点数张量或 32 位浮点数张量或 64 位浮点数张量或字符串类型张量或 1 位无符号整数张量或 32 位浮点数元素的复数类型张量或 64 位浮点数元素的复数类型张量或 f8E4M3FN 类型张量或 f8E4M3FNUZ 类型张量或 f8E5M2 类型张量或 f8E5M2FNUZ 类型张量或 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.If
(ONNXIfOp)ONNX 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 类型张量或 8 位无符号整数张量序列类型或 16 位无符号整数张量序列类型或 32 位无符号整数张量序列类型或 64 位无符号整数张量序列类型或 8 位无符号整数张量序列类型或 16 位无符号整数张量序列类型或 32 位无符号整数张量序列类型或 64 位无符号整数张量序列类型或 bfloat16 类型张量序列类型或 16 位浮点数张量序列类型或 32 位浮点数张量序列类型或 64 位浮点数张量序列类型或 字符串类型张量序列类型或 1 位无符号整数张量序列类型或 32 位浮点数元素的复数类型张量序列类型或 64 位浮点数元素的复数类型张量序列类型或 f8E4M3FN 类型张量序列类型或 f8E4M3FNUZ 类型张量序列类型或 f8E5M2 类型张量序列类型或 f8E5M2FNUZ 类型张量序列类型或 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 位浮点数元素的复数类型张量可选类型或 f8E4M3FN 类型张量可选类型或 f8E4M3FNUZ 类型张量可选类型或 f8E5M2 类型张量可选类型或 f8E5M2FNUZ 类型张量可选类型 |
onnx.Imputer
(ONNXImputerOp)ONNX Imputer 操作
将等于一个值的输入替换为另一个值,保持所有其他元素不变。
此操作通常用于在缺失值具有规范表示(例如 -1、0、NaN 或某些极值)的情况下替换缺失值。
imputed_value_floats 或 imputed_value_int64s 应该只定义一个 – 如果输入张量包含浮点数,则为浮点数,如果输入张量包含整数,则为整数。填充值必须全部适合张量元素类型的宽度。replaced_value_float 或 replaced_value_int64 应该只定义一个,取决于正在处理的是浮点数还是整数。
imputed_value 属性的长度可以是 1 个元素,也可以是每个输入特征一个元素。
换句话说,如果输入张量的形状为 [*,F],则属性数组的长度可以是 1 或 F。如果是 1,则它将沿最后一个维度广播并应用于每个特征。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
imputed_value_floats | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
imputed_value_int64s | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
replaced_value_float | ::mlir::FloatAttr | 32 位浮点类型属性 |
replaced_value_int64 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
X |
32 位浮点型值张量或 64 位浮点型值张量或 64 位无符号整数型值张量或 32 位无符号整数型值张量 |
结果 | 描述 |
---|---|
Y |
32 位浮点型值张量或 64 位浮点型值张量或 64 位无符号整数型值张量或 32 位无符号整数型值张量 |
onnx.InstanceNormalization
(ONNXInstanceNormalizationOp)ONNX 实例归一化操作
执行实例归一化,如论文 https://arxiv.org/abs/1607.08022 所述。
y = scale * (x - mean) / sqrt(variance + epsilon) + B,其中 mean 和 variance 是针对每个实例每个通道计算的。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
epsilon | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
scale |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
B |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.IsInf
(ONNXIsInfOp)ONNX IsInf 操作
将无穷大映射为真,其他值映射为假。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
detect_negative | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
detect_positive | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 操作
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::FloatAttr | 32 位浮点类型属性 |
beta | ::mlir::FloatAttr | 32 位浮点类型属性 |
bias | ::mlir::FloatAttr | 32 位浮点类型属性 |
size | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
onnx.LSTM
(ONNXLSTMOp)ONNX LSTM 操作
计算单层 LSTM。此操作通常通过某些自定义实现(例如 CuDNN)支持。
符号
X
- 输入张量i
- 输入门o
- 输出门f
- 遗忘门c
- 细胞门t
- 时间步长(t-1 表示前一时间步长)W[iofc]
- 输入、输出、遗忘和细胞门的 W 参数权重矩阵R[iofc]
- 输入、输出、遗忘和细胞门的 R 循环权重矩阵Wb[iofc]
- 输入、输出、遗忘和细胞门的 W 偏置向量Rb[iofc]
- 输入、输出、遗忘和细胞门的 R 偏置向量P[iof]
- 输入、输出和遗忘门的 P 窥视权重向量WB[iofc]
- 反向输入、输出、遗忘和细胞门的 W 参数权重矩阵RB[iofc]
- 反向输入、输出、遗忘和细胞门的 R 循环权重矩阵WBb[iofc]
- 反向输入、输出、遗忘和细胞门的 W 偏置向量RBb[iofc]
- 反向输入、输出、遗忘和细胞门的 R 偏置向量PB[iof]
- 反向输入、输出和遗忘门的 P 窥视权重向量H
- 隐藏状态num_directions
- 如果 direction == 双向则为 2,否则为 1激活函数
注意:以下是可选的
Softsign(x) - x/(1 + | x | ) |
方程式(默认:f=Sigmoid,g=Tanh,h=Tanh)
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
activation_alpha | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
activation_beta | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
activations | ::mlir::ArrayAttr | 字符串数组属性 |
clip | ::mlir::FloatAttr | 32 位浮点类型属性 |
direction | ::mlir::StringAttr | 字符串类型属性 |
hidden_size | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
input_forget | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
layout | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
W |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
R |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
B |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
sequence_lens |
32 位无符号整数类型值的张量或无类型 |
initial_h |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
initial_c |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
P |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
Y_h |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
Y_c |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
onnx.LabelEncoder
(ONNXLabelEncoderOp)ONNX 标签编码器操作
将输入张量中的每个元素映射到另一个值。
映射由两个并行属性“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::FloatAttr | 32 位浮点类型属性 |
default_int64 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
default_string | ::mlir::StringAttr | 字符串类型属性 |
keys_floats | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
keys_int64s | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
keys_strings | ::mlir::ArrayAttr | 字符串数组属性 |
values_floats | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
values_int64s | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
values_strings | ::mlir::ArrayAttr | 字符串数组属性 |
操作数 | 描述 |
---|---|
X |
字符串类型值的张量或 64 位无符号整数值的张量或 32 位浮点值的张量 |
结果 | 描述 |
---|---|
Y |
字符串类型值的张量或 64 位无符号整数值的张量或 32 位浮点值的张量 |
onnx.LayerNormalization
(ONNXLayerNormalizationOp)ONNX 层归一化操作
这是 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]
。变量 Var
和 StdDev
分别代表方差和标准差。第二个输出是 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]]
,则 Mean
和 InvStdDev
的形状是 [d[0], ..., d[axis-1], 1, ..., 1]
。 Y
和 X
具有相同的形状。此运算符支持单向广播(张量 Scale
和 B
应该可以单向广播到张量 X
);有关更多详细信息,请查看文档。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
epsilon | ::mlir::FloatAttr | 32 位浮点类型属性 |
stash_type | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
Scale |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
B |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量或无类型 |
结果 | 描述 |
---|---|
Y |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
Mean |
32 位浮点值的张量或 bfloat16 类型的张量或无类型 |
InvStdDev |
32 位浮点值的张量或 bfloat16 类型的张量或无类型 |
onnx.LayoutTransform
(ONNXLayoutTransformOp)在不同布局格式之间转换数据的操作
将张量从一种布局转换为另一种布局的操作。布局由属性定义,即 target_layout
,它允许此操作处理任意布局(例如,加速器使用的布局)。
target_layout
是可选的。如果没有给出,输入张量将被转换为没有布局的普通张量。
如果 target_layout
与输入的布局相同,此操作将通过规范化成为一个无操作。
输入和输出张量必须具有相同的形状。
此操作不是标准的一部分,而是为了帮助 onnx-mlir 添加的。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
target_layout | ::mlir::Attribute | 布局属性 |
操作数 | 描述 |
---|---|
data |
16 位浮点或 32 位浮点值的张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点或 32 位浮点值的张量 |
onnx.LeakyRelu
(ONNXLeakyReluOp)ONNX LeakyRelu 操作
LeakyRelu 获取输入数据(张量
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
alpha | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
X |
bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Less
(ONNXLessOp)ONNX Less 操作
返回对输入张量 A
和 B
逐元素执行 less
逻辑运算的结果张量(支持 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 操作
返回对输入张量 A
和 B
逐元素执行 less_equal
逻辑运算的结果张量(支持 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 线性分类器操作
线性分类器
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
classlabels_ints | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
classlabels_strings | ::mlir::ArrayAttr | 字符串数组属性 |
coefficients | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
intercepts | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
multi_class | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
post_transform | ::mlir::StringAttr | 字符串类型属性 |
操作数 | 描述 |
---|---|
X |
32 位浮点型值张量或 64 位浮点型值张量或 64 位无符号整数型值张量或 32 位无符号整数型值张量 |
结果 | 描述 |
---|---|
Y |
字符串类型值张量或 64 位无符号整数型值张量 |
Z |
32 位浮点值张量 |
onnx.LinearRegressor
(ONNXLinearRegressorOp)ONNX 线性回归器操作
广义线性回归评估。
如果将目标设置为 1(默认值),则执行单变量回归。
如果将目标设置为 M,则必须以序列形式传递 M 组系数,并且每个输入 n 在 N 中将输出 M 个结果。
系数数组的长度为 n,每个目标的系数是连续的。截距是可选的,但如果提供,必须与目标数量匹配。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
coefficients | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
intercepts | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
post_transform | ::mlir::StringAttr | 字符串类型属性 |
targets | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 操作
运算符计算给定输入的 softmax 值的对数
LogSoftmax(input, axis) = Log(Softmax(input, axis=axis))
“axis”属性指示将执行 LogSoftmax 的维度。输出张量具有相同的形状,并包含对应输入的 LogSoftmax 值。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
onnx.Loop
(ONNXLoopOp)ONNX 循环操作
通用循环构造。此循环具有多个终止条件
1) 循环次数。运行时指定的迭代次数。通过指定输入 M 设置。可选。设置为空字符串以省略。请注意,可以通过为输入 M 传递常量节点来指定静态循环次数(在图构建时指定)。2) 循环终止条件。这是操作的输入,它决定是否运行第一次迭代,也是主体图的循环携带依赖项。主体图必须为条件变量产生一个值,无论是否提供此输入。
此表总结了此运算符的操作模式以及等效的 C 样式代码
操作员输入定义为(max_trip_count,condition_var)。
input ("", ""): for (int i=0; ; ++i) { cond = … // 注意此值被忽略,但在主体中是必需的 }
input ("", cond) // 注意这类似于 while 循环 bool cond = …; for (int i=0; cond; ++i) { cond = …; }
input ("", 1) // 注意这类似于 do-while 循环 bool cond = true for (int i=0; cond; ++i) { cond = …; }
input (trip_count, "") // 注意这类似于 for 循环 int trip_count = … for (int i=0; i < trip_count; ++i) { cond = …; // 被忽略 }
input (trip_count, cond) int trip_count = …; bool cond = …; for (int i=0; i < trip_count && cond; ++i) { cond = …; }
示例用法 - cond 和行程计数
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、残差连接、线性层)。
子图(由循环节点产生)匹配的输入/输出基于顺序而不是名称。实现将根据此顺序找出名称。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, HasOnnxSubgraphOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
, ResultTypeInferenceOpInterface
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
M |
64 位有符号整数类型张量或无类型 |
cond |
1 位无符号整数值张量或无类型。 |
v_initial |
8 位无符号整数张量的可变参数或 16 位无符号整数张量或 32 位无符号整数张量或 64 位无符号整数张量或 8 位无符号整数张量或 16 位无符号整数张量或 32 位无符号整数张量或 64 位无符号整数张量或 bfloat16 类型张量或 16 位浮点数张量或 32 位浮点数张量或 64 位浮点数张量或 字符串类型张量或 1 位无符号整数张量或 32 位浮点数元素的复数类型张量或 64 位浮点数元素的复数类型张量或 f8E4M3FN 类型张量或 f8E4M3FNUZ 类型张量或 f8E5M2 类型张量或 f8E5M2FNUZ 类型张量或 8 位无符号整数张量序列类型或 16 位无符号整数张量序列类型或 32 位无符号整数张量序列类型或 64 位无符号整数张量序列类型或 8 位无符号整数张量序列类型或 16 位无符号整数张量序列类型或 32 位无符号整数张量序列类型或 64 位无符号整数张量序列类型或 bfloat16 类型张量序列类型或 16 位浮点数张量序列类型或 32 位浮点数张量序列类型或 64 位浮点数张量序列类型或 字符串类型张量序列类型或 1 位无符号整数张量序列类型或 32 位浮点数元素的复数类型张量序列类型或 64 位浮点数元素的复数类型张量序列类型或 f8E4M3FN 类型张量序列类型或 f8E4M3FNUZ 类型张量序列类型或 f8E5M2 类型张量序列类型或 f8E5M2FNUZ 类型张量序列类型或 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 位浮点数元素的复数类型张量可选类型或 f8E4M3FN 类型张量可选类型或 f8E4M3FNUZ 类型张量可选类型或 f8E5M2 类型张量可选类型或 f8E5M2FNUZ 类型张量可选类型 |
结果 | 描述 |
---|---|
v_final_and_scan_outputs |
8 位无符号整数张量的可变参数或 16 位无符号整数张量或 32 位无符号整数张量或 64 位无符号整数张量或 8 位无符号整数张量或 16 位无符号整数张量或 32 位无符号整数张量或 64 位无符号整数张量或 bfloat16 类型张量或 16 位浮点数张量或 32 位浮点数张量或 64 位浮点数张量或 字符串类型张量或 1 位无符号整数张量或 32 位浮点数元素的复数类型张量或 64 位浮点数元素的复数类型张量或 f8E4M3FN 类型张量或 f8E4M3FNUZ 类型张量或 f8E5M2 类型张量或 f8E5M2FNUZ 类型张量或 8 位无符号整数张量序列类型或 16 位无符号整数张量序列类型或 32 位无符号整数张量序列类型或 64 位无符号整数张量序列类型或 8 位无符号整数张量序列类型或 16 位无符号整数张量序列类型或 32 位无符号整数张量序列类型或 64 位无符号整数张量序列类型或 bfloat16 类型张量序列类型或 16 位浮点数张量序列类型或 32 位浮点数张量序列类型或 64 位浮点数张量序列类型或 字符串类型张量序列类型或 1 位无符号整数张量序列类型或 32 位浮点数元素的复数类型张量序列类型或 64 位浮点数元素的复数类型张量序列类型或 f8E4M3FN 类型张量序列类型或 f8E4M3FNUZ 类型张量序列类型或 f8E5M2 类型张量序列类型或 f8E5M2FNUZ 类型张量序列类型或 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 位浮点数元素的复数类型张量可选类型或 f8E4M3FN 类型张量可选类型或 f8E4M3FNUZ 类型张量可选类型或 f8E5M2 类型张量可选类型或 f8E5M2FNUZ 类型张量可选类型 |
onnx.LpNormalization
(ONNXLpNormalizationOp)ONNX LpNormalization 操作
给定一个矩阵,沿提供的轴应用 Lp 归一化。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
p | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
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_UPPER
或 SAME_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::IntegerAttr | 64 位有符号整数类型属性 |
dilations | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
kernel_shape | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
p | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
pads | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
strides | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
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 位无符号整数类型张量或 无类型 |
b_zero_point |
8 位无符号整数类型张量或 8 位无符号整数类型张量或 无类型 |
结果 | 描述 |
---|---|
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 操作
每个输入张量的逐元素最大值(具有 Numpy 样式的广播支持)。所有输入和输出必须具有相同的数据类型。此操作符支持 **多方向(即 Numpy 样式)广播**;有关更多详细信息,请查看 文档。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
data_0 |
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.MaxPool
(ONNXMaxPoolOp)ONNX MaxPool 操作
MaxPool 使用输入张量 X 并根据内核大小、步幅大小和填充长度在整个张量上应用最大池化。最大池化包括根据内核大小计算输入张量子集的所有值的 max,并将数据下采样到输出张量 Y 以进行进一步处理。输出空间形状根据是否使用显式填充(其中使用填充),还是使用自动填充(其中使用 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_UPPER
或 SAME_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::IntegerAttr | 64 位有符号整数类型属性 |
dilations | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
kernel_shape | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
pads | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
storage_order | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
strides | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点值张量或 32 位浮点值张量或 64 位浮点值张量或 8 位无符号整数值张量或 8 位无符号整数值张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点值张量或 32 位浮点值张量或 64 位浮点值张量或 8 位无符号整数值张量或 8 位无符号整数值张量 |
索引 |
64 位有符号整数类型张量或无类型 |
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::IntegerAttr | 64 位有符号整数类型属性 |
dilations | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
kernel_shape | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
pads | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
storage_order | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
strides | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
X |
任何类型值的 memref 或任何类型值的张量 |
结果 | 描述 |
---|---|
o_Y |
任何类型值的 memref 或任何类型值的张量 |
onnx.MaxRoiPool
(ONNXMaxRoiPoolOp)ONNX MaxRoiPool 操作
ROI 最大池化使用输入张量 X 和感兴趣区域 (RoI) 来在每个 RoI 上应用最大池化,以生成形状为 (num_rois, channels, pooled_shape[0], pooled_shape[1]) 的输出 4-D 张量。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
pooled_shape | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
spatial_scale | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
rois |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.MaxUnpool
(ONNXMaxUnpoolOp)ONNX MaxUnpool 操作
MaxUnpool 基本上计算 MaxPool 操作的部分逆。此操作的输入信息通常是 MaxPool 操作的输出信息。第一个输入张量 X 是需要反池化的张量,它通常是 MaxPool 的池化张量(第一个输出)。第二个输入张量 I 包含与第一个输入张量 X 中元素相对应的(局部最大)元素的索引。输入张量 I 通常是 MaxPool 操作的第二个输出。第三个(可选)输入是一个张量,指定反池化操作的输出大小。
MaxUnpool 旨在对 MaxPool 操作进行“部分”逆。“部分”是因为来自 MaxPool 的原始输入的所有非最大值在 MaxUnpool 操作的输出中被设置为零。对反池化操作的结果进行池化应该可以恢复到反池化操作的原始输入。
MaxUnpool 可以为几个输入大小生成相同的大小输出,这使得反池化操作变得模棱两可。第三个输入参数 output_size 用于消除操作的歧义,并生成已知/可预测大小的输出张量。
除了输入之外,MaxUnpool 还采用三个属性,即 kernel_shape、strides 和 pads,它们定义了精确的反池化操作。这些属性通常与反池化操作尝试反转的相应池化操作具有相同的值。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
kernel_shape | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
pads | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
strides | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
我 |
64 位无符号整数类型张量 |
output_shape |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
输出 |
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 操作
MeanVarianceNormalization 函数:使用公式对输入张量 X 执行均值方差归一化:(X-EX)/sqrt(E(X-EX)^2)
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
onnx.MelWeightMatrix
(ONNXMelWeightMatrixOp)ONNX MelWeightMatrix 操作
生成一个 MelWeightMatrix,它可以用于根据梅尔尺度上的 [lower_edge_hertz, upper_edge_hertz] 范围将包含线性采样频率谱(来自 DFT 或 STFT)的张量重新加权到 num_mel_bins 频率信息。此函数根据以下公式定义梅尔尺度上的频率(以赫兹为单位)
mel(f) = 2595 * log10(1 + f/700)
在返回的矩阵中,所有三角形(滤波器组)的峰值均为 1.0。
返回的 MelWeightMatrix 可用于右乘线性比例谱值的频谱图 S 的形状 [frames, num_spectrogram_bins](例如 STFT 幅度),以生成形状为 [frames, num_mel_bins] 的“梅尔频谱图”M。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
output_datatype | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 操作
每个输入张量的逐元素最小值(具有 Numpy 样式的广播支持)。所有输入和输出必须具有相同的数据类型。此操作符支持 **多方向(即 Numpy 样式)广播**;有关更多详细信息,请查看 文档。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
data_0 |
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.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 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
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::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 动量操作
使用动量计算随机梯度更新的一次迭代。此操作可以进行多个张量变量的优化。
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::FloatAttr | 32 位浮点类型属性 |
beta | ::mlir::FloatAttr | 32 位浮点类型属性 |
mode | ::mlir::StringAttr | 字符串类型属性 |
norm_coefficient | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
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 多项式操作
根据每个可能结果的概率,从多项式分布中生成样本张量。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
dtype | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
样本大小 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
seed | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
32 位无符号整数型值张量或 64 位无符号整数型值张量 |
onnx.Neg
(ONNXNegOp)ONNX Neg 操作
Neg 接受一个输入数据(张量
特征: 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 运算符计算(加权)负对数似然损失。其“输入”张量具有 (N, C, d1, d2, …, dk) 的形状,其中 k >= 0。“输入”张量包含 input[n, :, d_1, d_2,…, d_k] 属于 [0, C) 类别的对数概率。操作符的“目标”输入张量具有 (N, d1, d2, …, dk) 的形状。它编码类别标签(C 类中的一个)或它可能包含一个特殊值(由属性 ignore_index 指示)用于 N x d1 x d2 x … x dk 个样本。将 input[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].
当提供可选的“权重”时,样本损失计算如下
loss[n][d_1][d_2]...[d_k] = -input[n][c][d_1][d_2]...[d_k] * weight[c].
当目标值等于 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::IntegerAttr | 64 位有符号整数类型属性 |
reduction | ::mlir::StringAttr | 字符串类型属性 |
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
target |
32 位无符号整数型值张量或 64 位无符号整数型值张量 |
weight |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
结果 | 描述 |
---|---|
loss |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.NonMaxSuppression
(ONNXNonMaxSuppressionOp)ONNX 非极大值抑制操作
过滤掉与先前选择的框具有高交并比 (IOU) 重叠的框。得分低于 score_threshold 的边界框将被删除。边界框格式由属性 center_point_box 指示。请注意,此算法与坐标系中原点的位置无关,更一般地说,对坐标系的正交变换和平移是不变的;因此,坐标系的平移或反射会导致算法选择相同的框。selected_indices 输出是一组整数,索引到表示所选框的输入边界框集合。然后可以使用 Gather 或 GatherND 操作获取与所选索引相对应的边界框坐标。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
center_point_box | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
boxes |
32 位浮点值张量 |
scores |
32 位浮点值张量 |
max_output_boxes_per_class |
64 位有符号整数类型张量或无类型 |
iou_threshold |
32 位浮点值的张量或无类型 |
score_threshold |
32 位浮点值的张量或无类型 |
结果 | 描述 |
---|---|
selected_indices |
64 位无符号整数类型张量 |
onnx.NonZero
(ONNXNonZeroOp)ONNX 非零操作
返回非零元素的索引(以行主序 - 按维度)。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 类型 | 描述 |
---|---|---|
价值 | ::mlir::UnitAttr | 单位属性 |
结果 | 描述 |
---|---|
none_val |
无类型 |
onnx.Normalizer
(ONNXNormalizerOp)ONNX 规范化操作
规范化输入。有三种规范化模式,它们具有相应的公式,使用元素级中缀运算符“/”和“^”以及全张量函数“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 独热编码操作
用一组 1 和 0 替换每个输入元素,其中在传递的类别的索引处放置一个 1。总类别计数将确定输出数组 Y 的额外维度的尺寸。
例如,如果我们传递一个具有单个值 4 的张量,以及一个类别计数为 8,则输出将是一个具有[0,0,0,0,1,0,0,0]
的张量。
此操作符假设每个输入特征都来自同一组类别。
如果输入是 float、int32 或 double 的张量,则数据将被转换为整数,并且 cats_int64s 类别列表将用于查找。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
cats_int64s | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
cats_strings | ::mlir::ArrayAttr | 字符串数组属性 |
zeros | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
X |
字符串类型值的张量或 64 位无符号整数值的张量或 32 位无符号整数值的张量或 32 位浮点值的张量或 64 位浮点值的张量 |
结果 | 描述 |
---|---|
Y |
32 位浮点值张量 |
onnx.OneHot
(ONNXOneHotOp)ONNX 独热操作
根据输入生成独热张量。“indices”输入张量中索引值表示的位置将具有“on_value”,而其他位置将具有“off_value”,其中“on_value”和“off_value”作为必需的输入参数“values”的一部分指定,其格式为 [off_value, on_value]。输出张量的秩将比输入张量的秩大 1。附加维度用于独热表示。附加维度将插入到由“axis”指定的位
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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 可选获取元素操作
如果输入是张量或序列类型,则返回输入。如果输入是可选类型,则输出输入中的元素。如果输入是空的可选类型(即没有元素),则会出错,并且在这种情况下,行为未定义。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
输入 |
8 位无符号整数类型的张量值的 SeqType 的 OptType 或 16 位无符号整数类型的张量值的 SeqType 的 OptType 或 32 位无符号整数类型的张量值的 SeqType 的 OptType 或 64 位无符号整数类型的张量值的 SeqType 的 OptType 或 8 位无符号整数类型的张量值的 SeqType 的 OptType 或 16 位无符号整数类型的张量值的 SeqType 的 OptType 或 32 位无符号整数类型的张量值的 SeqType 的 OptType 或 64 位无符号整数类型的张量值的 SeqType 的 OptType 或 16 位浮点数类型的张量值的 SeqType 的 OptType 或 32 位浮点数类型的张量值的 SeqType 的 OptType 或 64 位浮点数类型的张量值的 SeqType 的 OptType 或 字符串类型张量值的 SeqType 的 OptType 或 1 位无符号整数类型的张量值的 SeqType 的 OptType 或 32 位浮点数元素的复数类型的张量值的 SeqType 的 OptType 或 64 位浮点数元素的复数类型的张量值的 SeqType 的 OptType 或 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 位浮点数元素的复数类型的张量值或 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 位无符号整数类型的张量值或 16 位无符号整数类型的张量值或 32 位无符号整数类型的张量值或 64 位无符号整数类型的张量值或 8 位无符号整数类型的张量值或 16 位无符号整数类型的张量值或 32 位无符号整数类型的张量值或 64 位无符号整数类型的张量值或 16 位浮点数类型的张量值或 32 位浮点数类型的张量值或 64 位浮点数类型的张量值或 字符串类型张量值或 1 位无符号整数类型的张量值或 32 位浮点数元素的复数类型的张量值或 64 位浮点数元素的复数类型的张量值或 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 |
onnx.OptionalHasElement
(ONNXOptionalHasElementOp)ONNX OptionalHasElement 操作
如果 (1) 输入是可选类型并包含元素,或者,(2) 输入是张量或序列类型,则返回 true。如果输入未提供或为空可选类型,则此操作返回 false。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
输入 |
8 位无符号整数类型的张量值的 SeqType 的 OptType 或 16 位无符号整数类型的张量值的 SeqType 的 OptType 或 32 位无符号整数类型的张量值的 SeqType 的 OptType 或 64 位无符号整数类型的张量值的 SeqType 的 OptType 或 8 位无符号整数类型的张量值的 SeqType 的 OptType 或 16 位无符号整数类型的张量值的 SeqType 的 OptType 或 32 位无符号整数类型的张量值的 SeqType 的 OptType 或 64 位无符号整数类型的张量值的 SeqType 的 OptType 或 16 位浮点数类型的张量值的 SeqType 的 OptType 或 32 位浮点数类型的张量值的 SeqType 的 OptType 或 64 位浮点数类型的张量值的 SeqType 的 OptType 或 字符串类型张量值的 SeqType 的 OptType 或 1 位无符号整数类型的张量值的 SeqType 的 OptType 或 32 位浮点数元素的复数类型的张量值的 SeqType 的 OptType 或 64 位浮点数元素的复数类型的张量值的 SeqType 的 OptType 或 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 位浮点数元素的复数类型的张量值或 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 或 无类型 |
结果 | 描述 |
---|---|
输出 |
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 位无符号整数类型的张量值的 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 of SeqType 序列值或 16 位无符号整数张量的 OptType of SeqType 序列值或 32 位无符号整数张量的 OptType of SeqType 序列值或 64 位无符号整数张量的 OptType of SeqType 序列值或 8 位无符号整数张量的 OptType of SeqType 序列值或 16 位无符号整数张量的 OptType of SeqType 序列值或 32 位无符号整数张量的 OptType of SeqType 序列值或 64 位无符号整数张量的 OptType of SeqType 序列值或 16 位浮点型张量的 OptType of SeqType 序列值或 32 位浮点型张量的 OptType of SeqType 序列值或 64 位浮点型张量的 OptType of SeqType 序列值或 字符串类型张量的 OptType of SeqType 序列值或 1 位无符号整数张量的 OptType of SeqType 序列值或 32 位浮点型元素的复数类型张量的 OptType of SeqType 序列值或 64 位浮点型元素的复数类型张量的 OptType of 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.Or
(ONNXOrOp)ONNX 或运算
返回对输入张量 A
和 B
执行按元素 或
逻辑运算的结果张量(支持 NumPy 样式广播)。
该操作符支持 **多方向(即 Numpy 样式)广播**;有关更多详细信息,请查看 文档。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
A |
1 位无符号整数类型张量 |
B |
1 位无符号整数类型张量 |
结果 | 描述 |
---|---|
C |
1 位无符号整数类型张量 |
onnx.PRelu
(ONNXPReluOp)ONNX PRelu 运算
PRelu 以输入数据(张量
特征: 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 填充运算
给定一个包含要填充数据的张量 (data
)、一个包含每个轴的开始和结束填充值的张量 (pads
)、(可选)一个 mode
,以及(可选)一个 constant_value
,会生成一个填充后的张量 (output
)。
三个支持的 mode
是(类似于 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 位浮点元素复数类型张量 |
pads |
64 位无符号整数类型张量 |
constant_value |
8 位无符号整数张量值或 16 位无符号整数张量值或 32 位无符号整数张量值或 64 位无符号整数张量值或 8 位无符号整数张量值或 16 位无符号整数张量值或 32 位无符号整数张量值或 64 位无符号整数张量值或 bfloat16 类型张量值或 16 位浮点型张量值或 32 位浮点型张量值或 64 位浮点型张量值或 字符串类型张量值或 1 位无符号整数张量值或 32 位浮点型元素的复数类型张量值或 64 位浮点型元素的复数类型张量值或 无类型 |
轴 |
32 位有符号整数类型张量或 64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
输出 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
onnx.PadV11
(ONNXPadV11Op)ONNX 填充运算
给定一个包含要填充数据的张量 (data
)、一个包含每个轴的开始和结束填充值的张量 (pads
)、(可选)一个 mode
,以及(可选)一个 constant_value
,会生成一个填充后的张量 (output
)。
三个支持的 mode
是(类似于 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 位无符号整数类型张量 |
constant_value |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
结果 | 描述 |
---|---|
输出 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.PadV13
(ONNXPadV13Op)ONNX 填充运算
给定一个包含要填充数据的张量 (data
)、一个包含每个轴的开始和结束填充值的张量 (pads
)、(可选)一个 mode
,以及(可选)一个 constant_value
,会生成一个填充后的张量 (output
)。
三个支持的 mode
是(类似于 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 位无符号整数类型张量 |
constant_value |
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 填充运算
给定一个包含要填充数据的张量 (data
)、一个包含每个轴的开始和结束填充值的张量 (pads
)、(可选)一个 mode
,以及(可选)一个 constant_value
,会生成一个填充后的张量 (output
)。
三个支持的 mode
是(类似于 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 位无符号整数类型张量 |
constant_value |
8 位无符号整数张量值或 16 位无符号整数张量值或 32 位无符号整数张量值或 64 位无符号整数张量值或 8 位无符号整数张量值或 16 位无符号整数张量值或 32 位无符号整数张量值或 64 位无符号整数张量值或 bfloat16 类型张量值或 16 位浮点型张量值或 32 位浮点型张量值或 64 位浮点型张量值或 字符串类型张量值或 1 位无符号整数张量值或 32 位浮点型元素的复数类型张量值或 64 位浮点型元素的复数类型张量值或 无类型 |
轴 |
32 位有符号整数类型张量或 64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
输出 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
onnx.PadV2
(ONNXPadV2Op)ONNX 填充运算
给定 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::ArrayAttr | 64 位整数类型数组属性 |
价值 | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
data |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Pow
(ONNXPowOp)ONNX 幂运算
Pow 以输入数据(张量
特征: 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 运算符,用于打印其输入操作数的类型签名
打印运算符输入操作数的类型签名。此运算符在早期引入,以保留原始 ONNX 运算符的名称。
此操作不是标准的一部分,而是为了帮助 onnx-mlir 添加的。
属性 | MLIR 类型 | 描述 |
---|---|---|
op_name | ::mlir::StringAttr | 字符串类型属性 |
操作数 | 描述 |
---|---|
输入 |
任何类型张量的可变参数值或无类型 |
onnx.QLinearConv
(ONNXQLinearConvOp)ONNX QLinearConv 运算
卷积运算符消耗量化的输入张量、其比例和零点、量化的滤波器、其比例和零点以及输出的比例和零点,并计算量化的输出。每个比例和零点对必须具有相同的形状。这意味着它们必须是标量(每个张量)或 1 维张量(每个输出通道)。每个输入或输出及其相关的零点必须具有相同的类型。当存在偏差时,它必须使用 scale = 输入比例 * 权重比例和零点为 0 进行量化。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
auto_pad | ::mlir::StringAttr | 字符串类型属性 |
dilations | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
组 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
kernel_shape | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
pads | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
strides | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
x |
8 位无符号整数类型张量或 8 位无符号整数类型张量 |
x_scale |
32 位浮点值张量 |
x 零点 |
8 位无符号整数类型张量或 8 位无符号整数类型张量 |
w |
8 位无符号整数类型张量或 8 位无符号整数类型张量 |
w_scale |
32 位浮点值张量 |
w 零点 |
8 位无符号整数类型张量或 8 位无符号整数类型张量 |
y_scale |
32 位浮点值张量 |
y_zero_point |
8 位无符号整数类型张量或 8 位无符号整数类型张量 |
B |
32 位无符号整数类型值的张量或无类型 |
结果 | 描述 |
---|---|
y |
8 位无符号整数类型张量或 8 位无符号整数类型张量 |
onnx.QLinearMatMul
(ONNXQLinearMatMulOp)ONNX QLinearMatMul 运算
矩阵乘积,其行为类似于 numpy.matmul。它消耗两个量化的输入张量、它们的比例和零点、输出的比例和零点,并计算量化的输出。量化公式为 y = saturate((x / y_scale) + y_zero_point)。对于 (x / y_scale),它是四舍五入到最接近的偶数。有关详细信息,请参阅 https://en.wikipedia.org/wiki/Rounding。比例和零点必须具有相同的形状。它们必须是标量(每个张量)或 N 维张量(对于 'a' 来说是每行,对于 'b' 来说是每列)。标量是指每个张量量化,而 N 维是指每行或每列量化。如果输入是形状为 [M, K] 的 2 维张量,则零点和比例张量可以是 M 元素向量 [v_1, v_2, …, v_M](每行量化)和形状为 [v_1, v_2, …, v_K] 的 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_scale |
32 位浮点值张量 |
a_zero_point |
8 位无符号整数类型张量或 8 位无符号整数类型张量 |
b |
8 位无符号整数类型张量或 8 位无符号整数类型张量 |
b_scale |
32 位浮点值张量 |
b_zero_point |
8 位无符号整数类型张量或 8 位无符号整数类型张量 |
y_scale |
32 位浮点值张量 |
y_zero_point |
8 位无符号整数类型张量或 8 位无符号整数类型张量 |
结果 | 描述 |
---|---|
y |
8 位无符号整数类型张量或 8 位无符号整数类型张量 |
onnx.QuantizeLinear
(ONNXQuantizeLinearOp)ONNX 量化线性运算
线性量化运算符。它消耗高精度张量、比例和零点,以计算低精度/量化张量。比例因子和零点必须具有相同的形状,并且可以是用于每个张量/每层量化的标量,或用于每个轴量化的 1 维张量。量化公式为 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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
saturate | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 运算
这是 ONNX 中定义为函数的 RMS 层归一化。整个计算过程可以分为两个阶段。第一阶段是近似标准化,它使归一化后的元素具有零均值和单位方差。请参阅 这篇论文 中的公式 (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]
。变量 Var
和 StdDev
分别代表近似方差和标准差。根据 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]]
,则 Mean
和 InvStdDev
的形状为 [d[0], ..., d[axis-1], 1, ..., 1]
。Y
和 X
具有相同的形状。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
epsilon | ::mlir::FloatAttr | 32 位浮点类型属性 |
stash_type | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
Scale |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
B |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量或无类型 |
结果 | 描述 |
---|---|
Y |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
InvStdDev |
32 位浮点值的张量或 bfloat16 类型的张量或无类型 |
onnx.RNN
(ONNXRNNOp)ONNX RNN 操作
计算单层简单 RNN。此操作通常通过一些自定义实现(如 CuDNN)来支持。
符号
X
- 输入张量i
- 输入门t
- 时间步长(t-1 表示前一时间步长)Wi
- 输入门的 W 参数权重矩阵Ri
- 输入门的 R 循环权重矩阵Wbi
- 输入门的 W 参数偏置向量Rbi
- 输入门的 R 参数偏置向量WBi
- 反向输入门的 W 参数权重矩阵RBi
- 反向输入门的 R 循环权重矩阵WBbi
- 反向输入门的 WR 偏置向量RBbi
- 反向输入门的 RR 偏置向量H
- 隐藏状态num_directions
- 如果 direction == 双向则为 2,否则为 1激活函数
注意:以下是可选的
Softsign(x) - x/(1 + | x | ) |
方程 (默认: f=Tanh)
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
activation_alpha | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
activation_beta | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
activations | ::mlir::ArrayAttr | 字符串数组属性 |
clip | ::mlir::FloatAttr | 32 位浮点类型属性 |
direction | ::mlir::StringAttr | 字符串类型属性 |
hidden_size | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
layout | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
W |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
R |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
B |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
sequence_lens |
32 位无符号整数类型值的张量或无类型 |
initial_h |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
Y_h |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 无类型 |
onnx.RandomNormalLike
(ONNXRandomNormalLikeOp)ONNX RandomNormalLike 操作
生成一个包含从正态分布中随机抽取的值的张量。输出张量的形状从输入张量的形状复制,正态分布的参数由 mean
和 scale
指定。
数据类型由“dtype”参数指定,或者如果未提供则从输入张量复制。‘dtype’参数必须是 TensorProto 消息中的“DataType”枚举字段中指定的数据类型之一,并且在作为输出类型时有效。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
dtype | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
mean | ::mlir::FloatAttr | 32 位浮点类型属性 |
scale | ::mlir::FloatAttr | 32 位浮点类型属性 |
seed | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
输入 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.RandomNormal
(ONNXRandomNormalOp)ONNX RandomNormal 操作
生成一个包含从正态分布中随机抽取的值的张量。张量的形状由 shape
参数指定,正态分布的参数由 mean
和 scale
指定。
数据类型由“dtype”参数指定。‘dtype’参数必须是 TensorProto 消息中的“DataType”枚举字段中指定的数据类型之一。
特征: AlwaysSpeculatableImplTrait
接口:ConditionallySpeculatable
、NoMemoryEffect (MemoryEffectOpInterface)
、ResultTypeInferenceOpInterface
、ShapeHelperOpInterface
、ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
dtype | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
mean | ::mlir::FloatAttr | 32 位浮点类型属性 |
scale | ::mlir::FloatAttr | 32 位浮点类型属性 |
seed | ::mlir::FloatAttr | 32 位浮点类型属性 |
形状 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.RandomUniformLike
(ONNXRandomUniformLikeOp)ONNX RandomUniformLike 操作
生成一个包含从均匀分布中随机抽取的值的张量。输出张量的形状从输入张量的形状复制,均匀分布的参数由 low
和 high
指定。
数据类型由“dtype”参数指定,或者如果未提供则从输入张量复制。‘dtype’参数必须是 TensorProto 消息中的“DataType”枚举字段中指定的数据类型之一,并且在作为输出类型时有效。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
dtype | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
high | ::mlir::FloatAttr | 32 位浮点类型属性 |
low | ::mlir::FloatAttr | 32 位浮点类型属性 |
seed | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
输入 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.RandomUniform
(ONNXRandomUniformOp)ONNX RandomUniform 操作
生成一个包含从均匀分布中随机抽取的值的张量。张量的形状由 shape
参数指定,范围由 low
和 high
指定。
数据类型由“dtype”参数指定。‘dtype’参数必须是 TensorProto 消息中的“DataType”枚举字段中指定的数据类型之一。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
dtype | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
high | ::mlir::FloatAttr | 32 位浮点类型属性 |
low | ::mlir::FloatAttr | 32 位浮点类型属性 |
seed | ::mlir::FloatAttr | 32 位浮点类型属性 |
形状 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
结果 | 描述 |
---|---|
输出 |
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{}
操作数 | 描述 |
---|---|
开始 |
32 位浮点值的张量或 64 位浮点值的张量或 16 位无符号整数值的张量或 32 位无符号整数值的张量或 64 位无符号整数值的张量 |
limit |
32 位浮点值的张量或 64 位浮点值的张量或 16 位无符号整数值的张量或 32 位无符号整数值的张量或 64 位无符号整数值的张量 |
delta |
32 位浮点值的张量或 64 位浮点值的张量或 16 位无符号整数值的张量或 32 位无符号整数值的张量或 64 位无符号整数值的张量 |
结果 | 描述 |
---|---|
输出 |
32 位浮点值的张量或 64 位浮点值的张量或 16 位无符号整数值的张量或 32 位无符号整数值的张量或 64 位无符号整数值的张量 |
onnx.Reciprocal
(ONNXReciprocalOp)ONNX Reciprocal 操作
Reciprocal 接受一个输入数据 (Tensor
特征: 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 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
noop_with_empty_axes | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
轴 |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
reduced |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
onnx.ReduceL1V13
(ONNXReduceL1V13Op)ONNX ReduceL1 操作
计算输入张量元素沿提供的轴的 L1 范数。如果 keepdims
等于 1,则结果张量与输入张量具有相同的秩。如果 keepdims
等于 0,则结果张量将删除已缩减的维度。秩为零的输入张量有效。对空值集进行缩减将产生 0。
上述行为类似于 numpy,区别在于 numpy 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
noop_with_empty_axes | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
轴 |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
reduced |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
onnx.ReduceL2V13
(ONNXReduceL2V13Op)ONNX ReduceL2 操作
计算输入张量元素沿提供的轴的 L2 范数。如果 keepdims
等于 1,则结果张量与输入张量具有相同的秩。如果 keepdims
等于 0,则结果张量将删除已缩减的维度。秩为零的输入张量有效。对空值集进行缩减将产生 0。
上述行为类似于 numpy,区别在于 numpy 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
noop_with_empty_axes | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
轴 |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
reduced |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
onnx.ReduceLogSumExpV13
(ONNXReduceLogSumExpV13Op)ONNX ReduceLogSumExp 操作
计算输入张量元素沿提供的轴的对数和指数。如果 keepdims
等于 1,则结果张量与输入张量具有相同的秩。如果 keepdims
等于 0,则结果张量将删除已缩减的维度。秩为零的输入张量有效。对空值集进行缩减将产生负无穷大(如果数据类型支持)或其他情况下的未定义。
上述行为类似于 numpy,区别在于 numpy 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
noop_with_empty_axes | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
轴 |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
reduced |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
onnx.ReduceLogSumV13
(ONNXReduceLogSumV13Op)ONNX ReduceLogSum 操作
计算输入张量元素沿提供的轴的对数和。如果 keepdims
等于 1,则结果张量与输入张量具有相同的秩。如果 keepdims
等于 0,则结果张量将删除已缩减的维度。秩为零的输入张量有效。对空值集进行缩减将产生负无穷大(如果数据类型支持)或其他情况下的未定义。
上述行为类似于 numpy,区别在于 numpy 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
noop_with_empty_axes | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
32 位无符号整数值张量或 64 位无符号整数值张量或 32 位无符号整数值张量或 64 位无符号整数值张量或 16 位浮点值张量或 32 位浮点值张量或 64 位浮点值张量或 bfloat16 类型值张量或 8 位无符号整数值张量或 8 位无符号整数值张量或 1 位无符号整数值张量 |
轴 |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
reduced |
32 位无符号整数值张量或 64 位无符号整数值张量或 32 位无符号整数值张量或 64 位无符号整数值张量或 16 位浮点值张量或 32 位浮点值张量或 64 位浮点值张量或 bfloat16 类型值张量或 8 位无符号整数值张量或 8 位无符号整数值张量或 1 位无符号整数值张量 |
onnx.ReduceMaxV13
(ONNXReduceMaxV13Op)ONNX ReduceMax 操作
计算输入张量元素沿提供的轴的最大值。如果 keepdims
等于 1,则结果张量与输入张量具有相同的秩。如果 keepdims
等于 0,则结果张量将删除已缩减的维度。秩为零的输入张量有效。对空值集进行缩减将产生负无穷大(如果数据类型支持)或数据类型最小值的其他情况下的未定义。
上述行为类似于 numpy,区别在于 numpy 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
noop_with_empty_axes | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
32 位无符号整数值张量或 64 位无符号整数值张量或 32 位无符号整数值张量或 64 位无符号整数值张量或 16 位浮点值张量或 32 位浮点值张量或 64 位浮点值张量或 bfloat16 类型值张量或 8 位无符号整数值张量或 8 位无符号整数值张量 |
轴 |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
reduced |
32 位无符号整数值张量或 64 位无符号整数值张量或 32 位无符号整数值张量或 64 位无符号整数值张量或 16 位浮点值张量或 32 位浮点值张量或 64 位浮点值张量或 bfloat16 类型值张量或 8 位无符号整数值张量或 8 位无符号整数值张量 |
onnx.ReduceMean
(ONNXReduceMeanOp)ONNX ReduceMean 操作
计算输入张量元素沿指定轴的平均值。如果 keepdims
等于 1,则结果张量与输入张量具有相同的秩。如果 keepdims
等于 0,则结果张量将被修剪掉降维后的维度。秩为零的输入张量有效。对空值的集合进行约简将产生未定义的结果。
上述行为类似于 numpy,区别在于 numpy 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
noop_with_empty_axes | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
轴 |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
reduced |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
onnx.ReduceMeanV13
(ONNXReduceMeanV13Op)ONNX ReduceMean 操作
计算输入张量元素沿指定轴的平均值。如果 keepdims
等于 1,则结果张量与输入张量具有相同的秩。如果 keepdims
等于 0,则结果张量将被修剪掉降维后的维度。秩为零的输入张量有效。对空值的集合进行约简将产生未定义的结果。
上述行为类似于 numpy,区别在于 numpy 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
noop_with_empty_axes | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
32 位无符号整数值张量或 64 位无符号整数值张量或 32 位无符号整数值张量或 64 位无符号整数值张量或 16 位浮点值张量或 32 位浮点值张量或 64 位浮点值张量或 bfloat16 类型值张量或 8 位无符号整数值张量或 8 位无符号整数值张量或 1 位无符号整数值张量 |
轴 |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
reduced |
32 位无符号整数值张量或 64 位无符号整数值张量或 32 位无符号整数值张量或 64 位无符号整数值张量或 16 位浮点值张量或 32 位浮点值张量或 64 位浮点值张量或 bfloat16 类型值张量或 8 位无符号整数值张量或 8 位无符号整数值张量或 1 位无符号整数值张量 |
onnx.ReduceMinV13
(ONNXReduceMinV13Op)ONNX ReduceMin 操作
计算输入张量元素沿指定轴的最小值。如果 keepdims
等于 1,则结果张量与输入张量具有相同的秩。如果 keepdims
等于 0,则结果张量将被修剪掉降维后的维度。秩为零的输入张量有效。对空值的集合进行约简将产生正无穷大(如果数据类型支持)或否则为数据类型的最大值。
上述行为类似于 numpy,区别在于 numpy 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
noop_with_empty_axes | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
32 位无符号整数值张量或 64 位无符号整数值张量或 32 位无符号整数值张量或 64 位无符号整数值张量或 16 位浮点值张量或 32 位浮点值张量或 64 位浮点值张量或 bfloat16 类型值张量或 8 位无符号整数值张量或 8 位无符号整数值张量 |
轴 |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
reduced |
32 位无符号整数值张量或 64 位无符号整数值张量或 32 位无符号整数值张量或 64 位无符号整数值张量或 16 位浮点值张量或 32 位浮点值张量或 64 位浮点值张量或 bfloat16 类型值张量或 8 位无符号整数值张量或 8 位无符号整数值张量 |
onnx.ReduceProd
(ONNXReduceProdOp)ONNX ReduceProd 操作
计算输入张量元素沿指定轴的乘积。如果 keepdims
等于 1,则结果张量与输入张量具有相同的秩。如果 keepdims
等于 0,则结果张量将被修剪掉降维后的维度。秩为零的输入张量有效。对空值的集合进行约简将产生 1。
上述行为类似于 numpy,区别在于 numpy 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
noop_with_empty_axes | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
轴 |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
reduced |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
onnx.ReduceProdV13
(ONNXReduceProdV13Op)ONNX ReduceProd 操作
计算输入张量元素沿指定轴的乘积。如果 keepdims
等于 1,则结果张量与输入张量具有相同的秩。如果 keepdims
等于 0,则结果张量将被修剪掉降维后的维度。秩为零的输入张量有效。对空值的集合进行约简将产生 1。
上述行为类似于 numpy,区别在于 numpy 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
noop_with_empty_axes | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
轴 |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
reduced |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
onnx.ReduceSumSquare
(ONNXReduceSumSquareOp)ONNX ReduceSumSquare 操作
计算输入张量元素沿指定轴的平方和。如果 keepdims
等于 1,则结果张量与输入张量具有相同的秩。如果 keepdims
等于 0,则结果张量将被修剪掉降维后的维度。秩为零的输入张量有效。对空值的集合进行约简将产生 0。
上述行为类似于 numpy,区别在于 numpy 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
noop_with_empty_axes | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
轴 |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
reduced |
32 位无符号整数类型张量或 64 位无符号整数类型张量或 32 位有符号整数类型张量或 64 位有符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 bfloat16 类型张量 |
onnx.ReduceSumSquareV13
(ONNXReduceSumSquareV13Op)ONNX ReduceSumSquare 操作
计算输入张量元素沿指定轴的平方和。如果 keepdims
等于 1,则结果张量与输入张量具有相同的秩。如果 keepdims
等于 0,则结果张量将被修剪掉降维后的维度。秩为零的输入张量有效。对空值的集合进行约简将产生 0。
上述行为类似于 numpy,区别在于 numpy 默认将 keepdims
设置为 False
而不是 True
。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
32 位无符号整数值张量或 64 位无符号整数值张量或 32 位无符号整数值张量或 64 位无符号整数值张量或 16 位浮点值张量或 32 位浮点值张量或 64 位浮点值张量 |
结果 | 描述 |
---|---|
reduced |
32 位无符号整数值张量或 64 位无符号整数值张量或 32 位无符号整数值张量或 64 位无符号整数值张量或 16 位浮点值张量或 32 位浮点值张量或 64 位浮点值张量 |
onnx.Relu
(ONNXReluOp)ONNX Relu 操作
Relu 接收一个输入数据(张量
特征: 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 类型 | 描述 |
---|---|---|
allowzero | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量或 f8E4M3FN 类型张量或 f8E4M3FNUZ 类型张量或 f8E5M2 类型张量或 f8E5M2FNUZ 类型张量 |
形状 |
64 位无符号整数类型张量 |
结果 | 描述 |
---|---|
reshaped |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量或 f8E4M3FN 类型张量或 f8E4M3FNUZ 类型张量或 f8E5M2 类型张量或 f8E5M2FNUZ 类型张量 |
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 类型 | 描述 |
---|---|---|
antialias | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
coordinate_transformation_mode | ::mlir::StringAttr | 字符串类型属性 |
cubic_coeff_a | ::mlir::FloatAttr | 32 位浮点类型属性 |
exclude_outside | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
extrapolation_value | ::mlir::FloatAttr | 32 位浮点类型属性 |
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 位浮点类型张量或 无类型 |
scales |
32 位浮点值的张量或无类型 |
sizes |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
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 类型 | 描述 |
---|---|---|
coordinate_transformation_mode | ::mlir::StringAttr | 字符串类型属性 |
cubic_coeff_a | ::mlir::FloatAttr | 32 位浮点类型属性 |
exclude_outside | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
extrapolation_value | ::mlir::FloatAttr | 32 位浮点类型属性 |
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 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
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 类型 | 描述 |
---|---|---|
coordinate_transformation_mode | ::mlir::StringAttr | 字符串类型属性 |
cubic_coeff_a | ::mlir::FloatAttr | 32 位浮点类型属性 |
exclude_outside | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
extrapolation_value | ::mlir::FloatAttr | 32 位浮点类型属性 |
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 位浮点类型张量或 无类型 |
scales |
32 位浮点值的张量或无类型 |
sizes |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
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 类型 | 描述 |
---|---|---|
antialias | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
coordinate_transformation_mode | ::mlir::StringAttr | 字符串类型属性 |
cubic_coeff_a | ::mlir::FloatAttr | 32 位浮点类型属性 |
exclude_outside | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
extrapolation_value | ::mlir::FloatAttr | 32 位浮点类型属性 |
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 位浮点类型张量或 无类型 |
scales |
32 位浮点值的张量或无类型 |
sizes |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
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::IntegerAttr | 64 位有符号整数类型属性 |
time_axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
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 操作
在 Mask R-CNN 论文 中描述的感兴趣区域 (RoI) 对齐操作。RoiAlign 使用输入张量 X 和感兴趣区域 (roi) 对每个 RoI 应用池化;它产生一个形状为 (num_rois, C, output_height, output_width) 的 4D 张量。
RoiAlign 被提议通过在从原始图像转换为特征图以及从特征图转换为 RoI 特征时去除量化来避免错位;在每个 ROI 区域中,采样位置的值是通过双线性插值直接计算的。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
coordinate_transformation_mode | ::mlir::StringAttr | 字符串类型属性 |
mode | ::mlir::StringAttr | 字符串类型属性 |
output_height | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
output_width | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
sampling_ratio | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
spatial_scale | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
rois |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
batch_indices |
64 位无符号整数类型张量 |
结果 | 描述 |
---|---|
Y |
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 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.STFT
(ONNXSTFTOp)ONNX STFT 操作
计算信号的短时傅里叶变换。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
onesided | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
signal |
32 位浮点值张量或 16 位浮点值张量或 64 位浮点值张量或 bfloat16 类型值张量 |
frame_step |
32 位无符号整数型值张量或 64 位无符号整数型值张量 |
window |
32 位浮点值张量或 16 位浮点值张量或 64 位浮点值张量或 bfloat16 类型值张量或无类型 |
frame_length |
32 位有符号整数类型张量或 64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
输出 |
32 位浮点值张量或 16 位浮点值张量或 64 位浮点值张量或 bfloat16 类型值张量 |
onnx.SVMClassifier
(ONNXSVMClassifierOp)ONNX SVMClassifier 操作
支持向量机分类器
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
classlabels_ints | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
classlabels_strings | ::mlir::ArrayAttr | 字符串数组属性 |
coefficients | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
kernel_params | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
kernel_type | ::mlir::StringAttr | 字符串类型属性 |
post_transform | ::mlir::StringAttr | 字符串类型属性 |
prob_a | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
prob_b | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
rho | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
支持向量 | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
每类向量数 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
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::ArrayAttr | 32 位浮点型数组属性 |
kernel_params | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
kernel_type | ::mlir::StringAttr | 字符串类型属性 |
支持向量数 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
一类 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
post_transform | ::mlir::StringAttr | 字符串类型属性 |
rho | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
支持向量 | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
操作数 | 描述 |
---|---|
X |
32 位浮点型值张量或 64 位浮点型值张量或 64 位无符号整数型值张量或 32 位无符号整数型值张量 |
结果 | 描述 |
---|---|
Y |
32 位浮点值张量 |
onnx.Scaler
(ONNXScalerOp)ONNX Scaler 操作
重新调整输入数据,例如通过移除均值并缩放到单位方差来标准化特征。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
offset | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
scale | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
操作数 | 描述 |
---|---|
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 限制,只有操作符的最后一个参数可以是可变参数,因此初始状态和扫描输入一起列为一个输入参数。同样,最终状态和扫描输出一起列为一个输出参数。属性 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
以下示例显示了如何将一个简单的 RNN 跨越一个输入张量 %X,权重张量 %Wi,递归权重张量 %Ri,偏差张量 %Wbi 和 %Rbi,以及初始隐藏状态 %H_0 编码为 ScanLoop。请注意,循环体是一个嵌套图,它直接计算 %Wi、%Ri、%Wbi 和 %Rbi(通常是主体图中的常量或初始化器)。如果这些值是在外部图中计算的,则需要将它们作为额外的 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::IntegerAttr | 64 位有符号整数类型属性 |
scan_input_axes | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
scan_input_directions | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
scan_output_axes | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
scan_output_directions | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
initial_state_and_scan_inputs |
8 位无符号整数类型的张量或 16 位无符号整数类型的张量或 32 位无符号整数类型的张量或 64 位无符号整数类型的张量或 8 位无符号整数类型的张量或 16 位无符号整数类型的张量或 32 位无符号整数类型的张量或 64 位无符号整数类型的张量或 bfloat16 类型的张量或 16 位浮点类型的张量或 32 位浮点类型的张量或 64 位浮点类型的张量或字符串类型的张量或 1 位无符号整数类型的张量或 32 位浮点元素的复数类型的张量或 64 位浮点元素的复数类型的张量或 f8E4M3FN 类型的张量或 f8E4M3FNUZ 类型的张量或 f8E5M2 类型的张量或 f8E5M2FNUZ 类型的张量的可变参数 |
结果 | 描述 |
---|---|
final_state_and_scan_outputs |
8 位无符号整数类型的张量或 16 位无符号整数类型的张量或 32 位无符号整数类型的张量或 64 位无符号整数类型的张量或 8 位无符号整数类型的张量或 16 位无符号整数类型的张量或 32 位无符号整数类型的张量或 64 位无符号整数类型的张量或 bfloat16 类型的张量或 16 位浮点类型的张量或 32 位浮点类型的张量或 64 位浮点类型的张量或字符串类型的张量或 1 位无符号整数类型的张量或 32 位浮点元素的复数类型的张量或 64 位浮点元素的复数类型的张量或 f8E4M3FN 类型的张量或 f8E4M3FNUZ 类型的张量或 f8E5M2 类型的张量或 f8E5M2FNUZ 类型的张量的可变参数 |
onnx.ScatterElements
(ONNXScatterElementsOp)ONNX ScatterElements 操作
ScatterElements 接受三个输入 data
、updates
和 indices
,它们具有相同的秩 r >= 1,以及一个可选属性 axis,该属性标识 data
的一个轴(默认情况下,最外层的轴,即轴 0)。操作的输出是通过创建输入 data
的副本,然后将其值更新为由 updates
指定的值,这些值位于由 indices
指定的特定索引位置。它的输出形状与 data
的形状相同。
对于 updates
中的每个条目,data
中的目标索引是通过将 indices
中的相应条目与条目本身的索引组合而获得的:维度 = axis 的索引值是从 indices
中的相应条目的值获得的,而维度 != axis 的索引值是从条目本身的索引获得的。
reduction
允许指定一个可选的约简操作,该操作将应用于 updates
张量中的所有值,并将这些值约简到指定的 indices
上的 output
中。在 reduction
设置为 "none" 的情况下,索引不应具有重复条目:即,如果 idx1 != idx2,则 indices[idx1] != indices[idx2]。例如,在二维张量情况下,对应于 [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
是 +
、*
、max
或 min
,具体取决于指定的内容。
此操作符是 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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
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 接受三个输入 data
张量,秩为 r >= 1,indices
张量,秩为 q >= 1,以及 updates
张量,秩为 q + r - indices.shape[-1] - 1。操作的输出是通过创建输入 data
的副本,然后将其值更新为由 updates
指定的值,这些值位于由 indices
指定的特定索引位置。它的输出形状与 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
是通过以下等式计算的
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
是 +
、*
、max
或 min
,具体取决于指定的内容。
此操作符是 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 接收三个输入 data
、updates
和 indices
,它们的秩 r >= 1 相同,以及一个可选的属性 axis,它标识 data
的一个轴(默认情况下,最外层的轴,即轴 0)。该操作的输出是通过创建输入 data
的副本,然后将它的值更新为由 updates
指定的值,在由 indices
指定的特定索引位置上。它的输出形状与 data
的形状相同。
对于 updates
中的每个条目,data
中的目标索引是通过将 indices
中的相应条目与条目本身的索引组合而获得的:维度 = axis 的索引值是从 indices
中的相应条目的值获得的,而维度 != axis 的索引值是从条目本身的索引获得的。
例如,在二维张量情况下,对应于 [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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 接收一个输入数据(张量
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
alpha | ::mlir::FloatAttr | 32 位浮点类型属性 |
gamma | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
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{}
操作数 | 描述 |
---|---|
输入序列 |
8 位无符号整数类型张量序列或 16 位无符号整数类型张量序列或 32 位无符号整数类型张量序列或 64 位无符号整数类型张量序列或 8 位无符号整数类型张量序列或 16 位无符号整数类型张量序列或 32 位无符号整数类型张量序列或 64 位无符号整数类型张量序列或 16 位浮点类型张量序列或 32 位浮点类型张量序列或 64 位浮点类型张量序列或 字符串类型张量序列或 1 位无符号整数类型张量序列或 32 位浮点元素复数类型张量序列 或 64 位浮点元素复数类型张量序列 |
position |
32 位无符号整数型值张量或 64 位无符号整数型值张量 |
结果 | 描述 |
---|---|
tensor |
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 位浮点数元素的复数类型张量的可变参数列表 |
结果 | 描述 |
---|---|
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::IntegerAttr | 64 位有符号整数类型属性 |
结果 | 描述 |
---|---|
输出 |
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{}
操作数 | 描述 |
---|---|
输入序列 |
8 位无符号整数类型张量序列或 16 位无符号整数类型张量序列或 32 位无符号整数类型张量序列或 64 位无符号整数类型张量序列或 8 位无符号整数类型张量序列或 16 位无符号整数类型张量序列或 32 位无符号整数类型张量序列或 64 位无符号整数类型张量序列或 16 位浮点类型张量序列或 32 位浮点类型张量序列或 64 位浮点类型张量序列或 字符串类型张量序列或 1 位无符号整数类型张量序列或 32 位浮点元素复数类型张量序列 或 64 位浮点元素复数类型张量序列 |
position |
32 位有符号整数类型张量或 64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
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{}
操作数 | 描述 |
---|---|
输入序列 |
8 位无符号整数类型张量序列或 16 位无符号整数类型张量序列或 32 位无符号整数类型张量序列或 64 位无符号整数类型张量序列或 8 位无符号整数类型张量序列或 16 位无符号整数类型张量序列或 32 位无符号整数类型张量序列或 64 位无符号整数类型张量序列或 16 位浮点类型张量序列或 32 位浮点类型张量序列或 64 位浮点类型张量序列或 字符串类型张量序列或 1 位无符号整数类型张量序列或 32 位浮点元素复数类型张量序列 或 64 位浮点元素复数类型张量序列 |
tensor |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
position |
32 位有符号整数类型张量或 64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
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{}
操作数 | 描述 |
---|---|
输入序列 |
8 位无符号整数类型张量序列或 16 位无符号整数类型张量序列或 32 位无符号整数类型张量序列或 64 位无符号整数类型张量序列或 8 位无符号整数类型张量序列或 16 位无符号整数类型张量序列或 32 位无符号整数类型张量序列或 64 位无符号整数类型张量序列或 16 位浮点类型张量序列或 32 位浮点类型张量序列或 64 位浮点类型张量序列或 字符串类型张量序列或 1 位无符号整数类型张量序列或 32 位浮点元素复数类型张量序列 或 64 位浮点元素复数类型张量序列 |
结果 | 描述 |
---|---|
length |
64 位无符号整数类型张量 |
onnx.SequenceMap
(ONNXSequenceMapOp)ONNX SequenceMap 操作
将子图应用于输入序列中的每个样本。
输入可以是张量或序列,除了第一个输入,它必须是序列。第一个输入序列的长度将决定输出中的样本数量。任何其他序列输入都应该具有相同数量的样本。输入和输出的数量应该与子图中的数量匹配。
对于输出中的每个第 i 个元素,将从输入序列中提取第 i 个位置的样本,并将子图应用于它。输出将包含每个样本的子图的输出,顺序与输入中的顺序相同。
此操作符假设处理每个样本都是独立的,可以在并行或任何顺序执行。用户不能期望每个子图被计算的特定顺序。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
、HasOnnxSubgraphOpInterface
、NoMemoryEffect (MemoryEffectOpInterface)
、ShapeHelperOpInterface
、ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
输入序列 |
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 操作
接收一个张量作为输入,并输出一个包含输入张量形状的一维 int64 张量。可选属性 start 和 end 可用于计算输入张量形状的切片。如果省略 start 轴,则切片从轴 0 开始。如果指定了 end 轴,则它是不包含的(返回值不会包含该轴的大小)。如果省略了 end 轴,则将包含直到最后一个轴的所有轴。负轴表示从最后一个轴开始反向计数。请注意,如果轴超出范围(在负轴的情况下添加 r 后),则轴将被钳制到范围 [0, r-1],其中 r 是输入张量的秩。因此,指定任何 end 值 > r 等效于指定 end 值为 r,指定任何 start 值 < -r 等效于指定 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 类型 | 描述 |
---|---|---|
结束 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
开始 | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
data |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量或 f8E4M3FN 类型张量或 f8E4M3FNUZ 类型张量或 f8E5M2 类型张量或 f8E5M2FNUZ 类型张量 |
结果 | 描述 |
---|---|
形状 |
64 位无符号整数类型张量 |
onnx.ShapeTransform
(ONNXShapeTransformOp)ONNX 元素级形状转换操作
此操作符将张量转换为另一个张量,其形状通过给定的仿射映射更改。这是按元素方式转换,因此输入中的每个元素都将通过仿射映射复制到输出中的一个元素。仿射映射必须是双射的。
例如,以下代码使用 onnx.ShapeTransform
将张量从二维重塑为四维。
#reshape = affine_map(d0, d1) -> (d0/32, d0%32, d1/64, d1%64)
%Y = onnx.ShapeTransform(%arg0) {index_map = #reshape} : (tensor<128x128xf32>) -> tensor<4x32x2x64xf32>
onnx.ShapeTransform
将最终通过降低到 krnl
方言而实现为 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 | AffineMap 属性 |
操作数 | 描述 |
---|---|
输入 |
32 位浮点值张量 |
结果 | 描述 |
---|---|
输出 |
32 位浮点值张量 |
onnx.Shrink
(ONNXShrinkOp)ONNX Shrink 操作
Shrink 接收一个输入数据(张量
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
bias | ::mlir::FloatAttr | 32 位浮点类型属性 |
lambd | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
输入 |
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 接收一个输入数据(张量
特征: 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{}
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Sinh
(ONNXSinhOp)ONNX Sinh 操作
按元素方式计算给定输入张量的双曲正弦。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
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 类型张量 |
结果 | 描述 |
---|---|
size |
64 位无符号整数类型张量 |
onnx.Slice
(ONNXSliceOp)ONNX Slice 操作
沿着多个轴生成输入张量的切片。类似于 numpy:https://numpy.com.cn/doc/stable/user/basics.indexing.html?highlight=slice#slicing-and-striding
Slice 使用 starts
、ends
、axes
和 steps
输入来选择其输入 data
张量的子张量。
对于每个 i
在 [0, ... r-1]
中,其中 r = rank(input)
,必须计算有效的 starts[i]
、ends[i]
和 steps[i]
,如下所示。
如果省略了 axes
,则将其设置为 [0, ..., r-1]
。如果省略了 steps
,则将其设置为长度为 len(starts)
的 [1, ..., 1]
。
有效值初始化为 start[i] = 0
、ends[i] = dims[i]
,其中 dims
是 input
的维度,steps[i] = 1
。
通过向 axes
中的所有负元素添加 r
,将其转换为非负数,其中 r = rank(input)
。
向 starts[i]
和 ends[i]
中的所有负值添加 dims[axes[i]]
,其中 dims
是 input
的维度。然后,对于正向步进,调整后的 starts[i]
被夹紧在 [0, dims[axes[i]]]
范围内;对于负向步进,被夹紧在 [0, dims[axes[i]]-1]
范围内,并将 start[axes[i]]
设置为调整后的 starts[i]
。
调整后的 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 位无符号整数型值张量 |
轴 |
32 位有符号整数类型张量或 64 位有符号整数类型张量或无类型 |
steps |
32 位有符号整数类型张量或 64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
输出 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
onnx.SoftmaxCrossEntropyLoss
(ONNXSoftmaxCrossEntropyLossOp)ONNX Softmax 交叉熵损失操作
衡量 ‘scores’ 和 ‘labels’ 之间 Softmax 交叉熵的损失函数。此操作符首先计算一个损失张量,其形状与 labels 输入相同。如果输入是形状为 (N, C) 的 2D 张量,则损失张量可能是一个 N 元素向量 L = (l_1, l_2, …, l_N)。如果输入是形状为 (N, C, D1, D2, …, Dk) 的 N 维张量,则损失张量 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.
当标签值等于 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 可选地进行约简。
ReduceSum(L) / ReduceSum(W)
,其中张量 W 的形状为 (N, D1, D2, ..., Dk)
且 W[n][d1][d2]...[dk] = weights[labels[i][d1][d2]...[dk]]
。特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
ignore_index | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
reduction | ::mlir::StringAttr | 字符串类型属性 |
操作数 | 描述 |
---|---|
scores |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
labels |
32 位无符号整数型值张量或 64 位无符号整数型值张量 |
weights |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量或无类型 |
结果 | 描述 |
---|---|
输出 |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
log_prob |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量或无类型 |
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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
onnx.SoftmaxV11
(ONNXSoftmaxV11Op)ONNX Softmax 操作
操作符计算给定输入的批次中每一层的 Softmax(归一化指数)值。
输入不需要明确地是 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}] 维度的 2D 张量。对于轴 = 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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Softplus
(ONNXSoftplusOp)ONNX Softplus 操作
Softplus 接收一个输入数据(张量
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.Softsign
(ONNXSoftsignOp)ONNX Softsign 操作
按元素方式计算给定输入张量的 Softsign (x/(1+ | x | ))。 |
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
onnx.SpaceToDepth
(ONNXSpaceToDepthOp)ONNX SpaceToDepth 操作
SpaceToDepth 将空间数据的块重新排列成深度。更具体地说,此操作输出输入张量的副本,其中来自高度和宽度维度的值被移动到深度维度。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
blocksize | ::mlir::IntegerAttr | 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.Split
(ONNXSplitOp)ONNX Split 操作
沿着指定的 ‘axis’ 将张量拆分为张量列表。输入 ‘split’ 或属性 ‘num_outputs’ 应指定其中一个,但不能同时指定。如果指定了属性 ‘num_outputs’,则张量将被拆分为大小相等的部分。如果张量不能被均匀拆分为 num_outputs
,则最后一个块将更小。如果指定了输入 ‘split’,则它表示拆分中每个输出的大小。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
num_outputs | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
split |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
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’ 是标量(空形状的张量)或 1D 张量。如果 ‘split’ 是标量,则 ‘input’ 将被拆分为大小均为 ‘split’ 的块(如果可能)。如果给定轴 ‘axis’ 上的 ‘input’ 大小不能被 ‘split’ 整除,则仅最后一个块可能小于 ‘split’。如果 ‘split’ 是 1D 张量,则输入张量将被拆分为 ‘size(split)’ 个块,各个部分在 ‘axis’ 上的长度在 ‘split’ 中指定。在这种情况下,‘split’ 中所有条目的总和必须等于输入张量在 ‘axis’ 上的维度大小。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
keepdims | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
split |
32 位有符号整数类型张量或 64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
split | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
输入 |
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 位浮点数元素的复数类型张量的可变参数列表 |
onnx.SplitV13
(ONNXSplitV13Op)ONNX Split 操作
沿着指定的 ‘axis’ 将张量拆分为张量列表。可以使用输入 ‘split’ 指定各个部分的长度。否则,张量将被拆分为大小相等的部分。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
split |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
outputs |
8 位无符号整数类型张量变长参数或 16 位无符号整数类型张量变长参数或 32 位无符号整数类型张量变长参数或 64 位无符号整数类型张量变长参数或 8 位无符号整数类型张量变长参数或 16 位无符号整数类型张量变长参数或 32 位无符号整数类型张量变长参数或 64 位无符号整数类型张量变长参数或 bfloat16 类型张量变长参数或 16 位浮点类型张量变长参数或 32 位浮点类型张量变长参数或 64 位浮点类型张量变长参数或 字符串类型张量变长参数或 1 位无符号整数类型张量变长参数或 32 位浮点元素复数类型张量变长参数 或 64 位浮点元素复数类型张量变长参数 |
onnx.Sqrt
(ONNXSqrtOp)ONNX Sqrt 操作
平方根接收一个输入数据(张量
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
操作数 | 描述 |
---|---|
X |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
结果 | 描述 |
---|---|
Y |
16 位浮点型值张量或 32 位浮点型值张量或 64 位浮点型值张量或 bfloat16 类型值张量 |
onnx.Squeeze
(ONNXSqueezeOp)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 位浮点元素复数类型张量 |
轴 |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
squeezed |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
onnx.SqueezeV11
(ONNXSqueezeV11Op)ONNX Squeeze 操作
从张量的形状中删除单维条目。接收一个包含要压缩的轴列表的参数 axes
。如果未提供 axes
,则将从形状中删除所有单维。如果选择了形状条目不等于一的轴,则会引发错误。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
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::IntegerAttr | 64 位有符号整数类型属性 |
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{}
操作数 | 描述 |
---|---|
输入 |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
输出 |
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 并将其保存为向量。输入可以是一维或二维张量。对于一维输入,输出是该输入的 n-gram 表示。对于二维输入,输出也是二维张量,其第 i 行是第 i 个输入行的 n-gram 表示。更具体地说,如果输入形状为 [C],则相应的输出形状将为 [max(ngram_indexes) + 1]。如果输入形状为 [N, C],则此操作将生成一个 [N, max(ngram_indexes) + 1] 张量。
与标准的 n-gram 提取相比,这里,从原始序列中提取 n-gram 的索引不一定是连续的数字。索引之间的间断由跳跃次数控制。如果跳跃次数为 2,则在扫描原始序列时应该跳过两个标记。让我们考虑一个例子。假设输入序列为 [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。
如果 mode 为 "TF",则上面使用的示例是正确的。如果 mode 为 "IDF",则所有大于 1 的计数将被截断为 1,并且权重中的第 i 个元素将用于按比例(通过乘法)缩放池中第 i 个 n-gram 的计数。如果 mode 为 "TFIDF",则此操作首先计算所有 n-gram 的计数,然后按权重属性中的关联值对其进行缩放。
pool_strings 和 pool_int64s 中只能设置一个。如果设置了 pool_int64s,则输入应该是整数张量。如果设置了 pool_strings,则输入必须是字符串张量。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
max_gram_length | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
max_skip_count | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
min_gram_length | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
mode | ::mlir::StringAttr | 字符串类型属性 |
ngram_counts | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
ngram_indexes | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
pool_int64s | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
pool_strings | ::mlir::ArrayAttr | 字符串数组属性 |
weights | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
操作数 | 描述 |
---|---|
X |
字符串类型值的张量或 32 位无符号整数值的张量或 64 位无符号整数值的张量 |
结果 | 描述 |
---|---|
Y |
32 位浮点值张量 |
onnx.ThresholdedRelu
(ONNXThresholdedReluOp)ONNX ThresholdedRelu 操作
ThresholdedRelu 接收一个输入数据(张量
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
alpha | ::mlir::FloatAttr | 32 位浮点类型属性 |
操作数 | 描述 |
---|---|
X |
16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量 |
结果 | 描述 |
---|---|
Y |
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 个最大或最小元素。给定一个形状为 [a_0, a_1, …, a_{n-1}] 的输入张量和整数参数 k,返回两个输出
形状为 [a_0, a_1, …, a_{axis-1}, k, a_{axis+1}, … a_{n-1}] 的索引张量,其中包含前 k 个元素的索引(来自输入张量的原始索引)。
对于两个相等的值,此操作使用沿轴的索引作为平局决胜符。也就是说,索引较小的元素将先出现。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
largest | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
sorted | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 位浮点类型张量 |
索引 |
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 类型 | 描述 |
---|---|---|
置换 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
data |
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.TreeEnsembleClassifier
(ONNXTreeEnsembleClassifierOp)ONNX TreeEnsembleClassifier 操作
树集成分类器。返回每个 N 个输入的最高类别。
名为 'nodes_X' 的属性形成一个元组序列,按索引关联到序列中,所有序列必须具有相同的长度。这些元组定义了节点。
类似地,所有以 'class_' 为前缀的字段都是叶节点处投票的元组。叶节点可能有多个投票,其中每个投票按关联的 class_weights 索引加权。
classlabels_strings 或 classlabels_int64s 中将只定义一个。class_ids 是此列表中的索引。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
base_values | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
class_ids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
class_nodeids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
class_treeids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
class_weights | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
classlabels_int64s | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
classlabels_strings | ::mlir::ArrayAttr | 字符串数组属性 |
nodes_falsenodeids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
nodes_featureids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
nodes_hitrates | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
nodes_missing_value_tracks_true | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
nodes_modes | ::mlir::ArrayAttr | 字符串数组属性 |
nodes_nodeids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
nodes_treeids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
nodes_truenodeids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
nodes_values | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
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。
Mode 枚举为 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::ArrayAttr | 32 位浮点型数组属性 |
n_targets | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
nodes_falsenodeids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
nodes_featureids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
nodes_hitrates | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
nodes_missing_value_tracks_true | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
nodes_modes | ::mlir::ArrayAttr | 字符串数组属性 |
nodes_nodeids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
nodes_treeids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
nodes_truenodeids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
nodes_values | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
post_transform | ::mlir::StringAttr | 字符串类型属性 |
target_ids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
target_nodeids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
target_treeids | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
target_weights | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
操作数 | 描述 |
---|---|
X |
32 位浮点型值张量或 64 位浮点型值张量或 64 位无符号整数型值张量或 32 位无符号整数型值张量 |
结果 | 描述 |
---|---|
Y |
32 位浮点值张量 |
onnx.Trilu
(ONNXTriluOp)ONNX Trilu 操作
给定一个 2 维矩阵或 2 维矩阵的批次,返回张量(张量)的上三角或下三角部分。属性 "upper" 确定保留上三角还是下三角。如果设置为 true,则保留上三角矩阵。否则保留下三角矩阵。属性 "upper" 的默认值为 true。Trilu 接收一个形状为 [*, N, M] 的输入张量,其中 * 为零个或多个批次维度。上三角部分包含给定对角线 (k) 上和上面的元素。下三角部分包含对角线及其下面的元素。矩阵中的所有其他元素都设置为零。如果 k = 0,则保留主对角线上和上面的/下面的三角部分。如果 upper 设置为 true,则正 k 将保留上三角矩阵,但不包括主对角线及其上方的 (k-1) 个对角线。负 k 值将保留主对角线及其下方的 |k| 个对角线。如果 upper 设置为 false,则正 k 将保留下三角矩阵,包括主对角线及其上方的 k 个对角线。负 k 值将排除主对角线及其下方的 (|k|-1) 个对角线。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
upper | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
输入 |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
k |
64 位有符号整数类型张量或无类型 |
结果 | 描述 |
---|---|
输出 |
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 的轴 1 切片有 4 个子张量(形状 = (2, 4, 2))
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 类型 | 描述 |
---|---|---|
axis | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
sorted | ::mlir::IntegerAttr | 64 位有符号整数类型属性 |
操作数 | 描述 |
---|---|
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 位有符号整数类型张量或无类型 |
inverse_indices |
64 位有符号整数类型张量或无类型 |
counts |
64 位有符号整数类型张量或无类型 |
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 位浮点元素复数类型张量 |
轴 |
64 位无符号整数类型张量 |
结果 | 描述 |
---|---|
expanded |
8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 8 位无符号整数类型张量或 16 位无符号整数类型张量或 32 位无符号整数类型张量或 64 位无符号整数类型张量或 bfloat16 类型张量或 16 位浮点类型张量或 32 位浮点类型张量或 64 位浮点类型张量或 字符串类型张量或 1 位无符号整数类型张量或 32 位浮点元素复数类型张量 或 64 位浮点元素复数类型张量 |
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 类型 | 描述 |
---|---|---|
轴 | ::mlir::ArrayAttr | 64 位整数类型数组属性 |
操作数 | 描述 |
---|---|
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 上采样操作
对输入张量进行上采样。输出张量的每个维度值是: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 上采样操作
对输入张量进行上采样。输出张量的每个维度值是:output_dimension = floor(input_dimension * scale)。
特征: AlwaysSpeculatableImplTrait
接口: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
, ShapeHelperOpInterface
, ShapeInferenceOpInterface
影响: MemoryEffects::Effect{}
属性 | MLIR 类型 | 描述 |
---|---|---|
mode | ::mlir::StringAttr | 字符串类型属性 |
scales | ::mlir::ArrayAttr | 32 位浮点型数组属性 |
操作数 | 描述 |
---|---|
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{}
操作数 | 描述 |
---|---|
条件 |
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 异或操作
返回对输入张量 A
和 B
(支持 Numpy 样式广播)逐元素执行 xor
逻辑运算的结果张量。
该操作符支持 **多方向(即 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 区域。
特性:AlwaysSpeculatableImplTrait
,ReturnLike
,Terminator
接口: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::ArrayAttr | 64 位整数类型数组属性 |
classlabels_strings | ::mlir::ArrayAttr | 字符串数组属性 |
操作数 | 描述 |
---|---|
X |
32 位浮点值张量 |
结果 | 描述 |
---|---|
Z |
带有任何组合的字符串类型或 32 位浮点数值的元组的 SeqType,或带有任何组合的 64 位无符号整数或 32 位浮点数值的元组的 SeqType |