DML_SPLIT_OPERATOR_DESC構造体 (directml.h)

軸に沿って入力テンソルを複数の出力テンソルに分割します。

分割軸を除き、すべての入力テンソルと出力テンソルのサイズは同じである必要があります。 分割軸の入力テンソルのサイズによって、可能な分割が決まります。 たとえば、入力テンソルの分割軸のサイズが 3 の場合、1 +1+1 (3 出力)、1 +2 (2 出力)、2 +1 (2 出力)、または 3 (1 出力)、または入力テンソルのコピーである 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導入されました。

テンソル制約

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

要件

要件
Header directml.h