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,但縮減 的 Axes 中包含的維度必須是大小 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
引進。
Tensor 條件約束
- 除了使用 ARGMAX 和 ARGMIN 函式時,輸入和輸出張量數據類型必須相符,這一律會輸出整數數據類型。
- 輸出大小必須與輸入大小相同,但縮減的座標軸必須是 1。
根據函式支援 Tensor
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 |
規格需求
需求 | 值 |
---|---|
標頭 | directml.h |
另請參閱
功能層級 3_0 引進了這些獨立運算符,可取代 DML_REDUCE_FUNCTION_ARGMAX 和 DML_REDUCE_FUNCTION_ARGMIN所提供的功能。