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
導入されました。
テンソル制約
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 |
要件
要件 | 値 |
---|---|
Header | directml.h |