DML_SPLIT_OPERATOR_DESC 結構 (directml.h)
將沿著軸的輸入張量分割成多個輸出張量。
除了分割軸之外,所有輸入和輸出張量都必須具有相同的大小。 分割軸中的輸入張量大小會決定可能的分割。 例如,如果輸入張量分割軸的大小為 3,則有這些可能的分割:1+1+1+1 (3 輸出) 、1+2 (2 輸出) 、2+1 (2 個輸出) ,或 3 (1 個輸出,也就是輸入張量) 的複本。 輸出張量的分割軸大小必須加總到輸入張數的分割軸大小。 下列虛擬程式代碼說明這些條件約束。
splitSize = 0;
for (i = 0; i < OutputCount; i++) {
assert(outputTensors[i]->DimensionCount == inputTensor->DimensionCount);
for (dim = 0; dim < inputTensor->DimensionCount; dim++) {
if (dim == Axis) { splitSize += outputTensors[i]->Sizes[dim]; }
else { assert(outputTensors[i]->Sizes[dim] == inputTensor->Sizes[dim]); }
}
}
assert(splitSize == inputTensor->Sizes[Axis]);
分割成單一輸出張量只會產生輸入張量複本。
此運算子是 反DML_JOIN_OPERATOR_DESC。
語法
struct DML_SPLIT_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
UINT OutputCount;
const DML_TENSOR_DESC *OutputTensors;
UINT Axis;
};
成員
InputTensor
類型: const DML_TENSOR_DESC*
要分割成多個輸出張量的張量。
OutputCount
類型: UINT
此欄位會決定 OutputTensors 陣列的大小。 此值必須大於 0。
OutputTensors
類型: const DML_TENSOR_DESC*
陣列,其中包含從輸入張量分割的張量描述。 輸出大小必須與輸入張量的大小相同,但分割軸除外。
Axis
類型: UINT
要分割之輸入張量維度的索引。 除了這個座標軸以外,所有輸入和輸出張量的大小都必須相同。 此值必須位於範圍 [0, InputTensor.DimensionCount - 1]
中。
範例
下列範例會使用相同的輸入張量。
InputTensor: (Sizes:{1, 1, 6, 2}, DataType:FLOAT32)
[[[[1, 2],
[3, 4],
[5, 6],
[7, 8],
[9, 10],
[11, 12]]]]
範例 1. 分割軸 2
OutputCount: 3
Axis: 2
OutputTensors[0]: (Sizes:{1, 1, 2, 2}, DataType:FLOAT32)
[[[[1, 2],
[3, 4]]]]
OutputTensors[1]: (Sizes:{1, 1, 1, 2}, DataType:FLOAT32)
[[[[5, 6]]]]
OutputTensors[2]: (Sizes:{1, 1, 3, 2}, DataType:FLOAT32)
[[[[7, 8],
[9, 10],
[11, 12]]]]
範例 2. 分割軸 3
OutputCount: 2
Axis: 3
OutputTensors[0]: (Sizes:{1, 1, 6, 1}, DataType:FLOAT32)
[[[[1],
[3],
[5],
[7],
[9],
[11]]]]
OutputTensors[1]: (Sizes:{1, 1, 6, 1}, DataType:FLOAT32)
[[[[2],
[4],
[6],
[8],
[10],
[12]]]]
可用性
這個運算子是在 中 DML_FEATURE_LEVEL_1_0
引進的。
Tensor 條件約束
InputTensor 和 OutputTensors 必須具有相同 的 DataType 和 DimensionCount。
Tensor 支援
DML_FEATURE_LEVEL_4_1和更新版本
張 | 種類 | 支援的維度計數 | 支援的資料類型 |
---|---|---|---|
InputTensor | 輸入 | 1 到 8 | FLOAT64、FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
OutputTensors | 輸出陣列 | 1 到 8 | FLOAT64、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 |
OutputTensors | 輸出陣列 | 1 到 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_2_1和更新版本
張 | 種類 | 支援的維度計數 | 支援的資料類型 |
---|---|---|---|
InputTensor | 輸入 | 4 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputTensors | 輸出陣列 | 4 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_1_0和更新版本
張 | 種類 | 支援的維度計數 | 支援的資料類型 |
---|---|---|---|
InputTensor | 輸入 | 4 | FLOAT32、FLOAT16、INT32、INT16、UINT32、UINT16 |
OutputTensors | 輸出陣列 | 4 | FLOAT32、FLOAT16、INT32、INT16、UINT32、UINT16 |
規格需求
需求 | 值 |
---|---|
標頭 | directml.h |