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 條件約束

InputTensorOutputTensors 必須具有相同 的 DataTypeDimensionCount

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