DML_REDUCE_OPERATOR_DESC 结构 (directml.h)
输出输入张量 (一个或多个维度内) 总和、积、最小值等元素的缩减。
每个输出元素都是对输入张量子集应用缩减函数的结果。 缩减函数(如 sum)将输入元素映射到 N
单个输出元素。 每个缩减中涉及的输入元素由提供的输入轴确定: N
等于缩小轴大小的乘积。 如果指定了所有输入轴,运算符将对整个输入张量执行缩减并生成单个输出元素。
语法
struct DML_REDUCE_OPERATOR_DESC {
DML_REDUCE_FUNCTION Function;
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT AxisCount;
const UINT *Axes;
};
成员
Function
指定要应用于输入的缩减函数。
InputTensor
类型: const DML_TENSOR_DESC*
要从中读取的张量。
OutputTensor
类型: const DML_TENSOR_DESC*
要向其写入结果的张量。 每个输出元素都是 InputTensor 中元素子集减少的结果。
- DimensionCount 必须与 InputTensor.DimensionCount 匹配, (输入张量排名保留) 。
- 大小 必须与 InputTensor.Size 匹配,但缩小 的轴中包含的维度除外,其大小必须为 1。
AxisCount
类型: UINT
要减少的轴数。 此字段确定 Axes 数组的大小。
Axes
类型:_Field_size_ (AxisCount) const UINT*
要沿其减小的轴。 值必须位于 范围 [0, InputTensor.DimensionCount - 1]
中。
示例
以下示例都使用相同的二维输入张量。
InputTensor: (Sizes:{3, 3}, DataType:FLOAT32)
[[1, 2, 3],
[3, 0, 4],
[2, 4, 2]]
示例 1。 对列应用求和
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {0}
OutputTensor: (Sizes:{1, 3}, DataType:FLOAT32)
[[6, // sum({1, 3, 2})
6, // sum({2, 0, 4})
9]] // sum({3, 4, 2})
示例 2。 对行应用求和
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 1
Axes: {1}
OutputTensor: (Sizes:{3, 1}, DataType:FLOAT32)
[[6], // sum({1, 2, 3})
[7], // sum({3, 0, 4})
[8]] // sum({2, 4, 2})
示例 3.将 和 应用于整个张量 (所有轴)
Function: DML_REDUCE_FUNCTION_SUM
AxisCount: 2
Axes: {0, 1}
OutputTensor: (Sizes:{1, 1}, DataType:FLOAT32)
[[21]] // sum({1, 2, 3, 3, 0, 4, 2, 5, 2})
可用性
此运算符是在 中引入的 DML_FEATURE_LEVEL_1_0
。
张量约束
- 输入和输出张量数据类型必须匹配,除非使用 ARGMAX 和 ARGMIN 函数,后者始终输出整型数据类型。
- 输出大小必须与输入大小相同,但缩小的轴必须为 1。
根据函数的张量支持
ARGMIN 和 ARGMAX
DML_FEATURE_LEVEL_4_1 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
OutputTensor | 输出 | 1 到 8 | INT64、INT32、UINT64、UINT32 |
DML_FEATURE_LEVEL_3_0及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputTensor | 输出 | 1 到 8 | INT64、INT32、UINT64、UINT32 |
DML_FEATURE_LEVEL_2_1及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 4 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputTensor | 输出 | 4 | UINT32 |
DML_FEATURE_LEVEL_1_0 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 4 | FLOAT32、FLOAT16 |
OutputTensor | 输出 | 4 | UINT32 |
AVERAGE、L2、LOG_SUM 和 LOG_SUM_EXP
DML_FEATURE_LEVEL_3_0及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT32、FLOAT16 |
OutputTensor | 输出 | 1 到 8 | FLOAT32、FLOAT16 |
DML_FEATURE_LEVEL_1_0 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 4 | FLOAT32、FLOAT16 |
OutputTensor | 输出 | 4 | FLOAT32、FLOAT16 |
L1 和SUM_SQUARE
DML_FEATURE_LEVEL_5_0 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32 |
OutputTensor | 输出 | 1 到 8 | FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32 |
DML_FEATURE_LEVEL_3_0 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT32、FLOAT16 |
OutputTensor | 输出 | 1 到 8 | FLOAT32、FLOAT16 |
DML_FEATURE_LEVEL_1_0 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 4 | FLOAT32、FLOAT16 |
OutputTensor | 输出 | 4 | FLOAT32、FLOAT16 |
MIN 和 MAX
DML_FEATURE_LEVEL_5_0 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
OutputTensor | 输出 | 1 到 8 | FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_3_0 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputTensor | 输出 | 1 到 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_2_1 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 4 | FLOAT32、FLOAT16、INT32、UINT32 |
OutputTensor | 输出 | 4 | FLOAT32、FLOAT16、INT32、UINT32 |
DML_FEATURE_LEVEL_1_0 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 4 | FLOAT32、FLOAT16 |
OutputTensor | 输出 | 4 | FLOAT32、FLOAT16 |
MULTIPLY 和 SUM
DML_FEATURE_LEVEL_5_0 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32 |
OutputTensor | 输出 | 1 到 8 | FLOAT32、FLOAT16、INT64、INT32、UINT64、UINT32 |
DML_FEATURE_LEVEL_3_0 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 8 | FLOAT32、FLOAT16、INT32、UINT32 |
OutputTensor | 输出 | 1 到 8 | FLOAT32、FLOAT16、INT32、UINT32 |
DML_FEATURE_LEVEL_2_1 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 4 | FLOAT32、FLOAT16、INT32、UINT32 |
OutputTensor | 输出 | 4 | FLOAT32、FLOAT16、INT32、UINT32 |
DML_FEATURE_LEVEL_1_0 及更高版本
张 | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 4 | FLOAT32、FLOAT16 |
OutputTensor | 输出 | 4 | FLOAT32、FLOAT16 |
要求
要求 | 值 |
---|---|
Header | directml.h |
另请参阅
功能级别 3_0 引入了这些独立运算符,这些运算符取代 了 DML_REDUCE_FUNCTION_ARGMAX 和 DML_REDUCE_FUNCTION_ARGMIN 提供的功能。