DML_SLICE_OPERATOR_DESC構造体 (directml.h)
入力テンソルの 1 つのサブ領域 ("スライス") を抽出します。
スライスにコピーされた要素は、ディメンションごとに 3 つの値を使用して決定されます。
- オフセットは、ディメンション内でコピーする最初の要素をマークします。
- サイズは、ディメンション内でコピーする要素の数を示します。
- ストライドは、ディメンション内の要素の増分またはステップを示します。
指定された オフセット、 サイズ、 ストライド は、入力テンソルの境界内にある要素のみをコピーする必要があります (範囲外の読み取りは許可されません)。 スライスの サイズ は、出力テンソル サイズと完全に一致している必要があります。 一般に、コピーされる要素は次のように計算されます。
OutputTensor[OutputCoordinates] = InputTensor[Offsets + Strides * OutputCoordinates]
構文
struct DML_SLICE_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT DimensionCount;
const UINT *Offsets;
const UINT *Sizes;
const UINT *Strides;
};
メンバー
InputTensor
型: const DML_TENSOR_DESC*
スライスを抽出するテンソル。
OutputTensor
型: const DML_TENSOR_DESC*
スライスされたデータの結果を書き込むテンソル。
DimensionCount
型: UINT
ディメンションの数。 このフィールドは、 Offsets、 Sizes、 Strides 配列のサイズを決定します。 この値は、入力テンソルと出力テンソルの DimensionCount と一致する必要があります。 この値は、1 から 8 DML_FEATURE_LEVEL_3_0
までの範囲で指定する必要があります。それ以前の機能レベルでは、4 または 5 のいずれかの値が必要です。
Offsets
型: _Field_size_(DimensionCount) const UINT*
入力テンソルの各次元に沿ったスライスの開始を要素単位で含む配列。
Sizes
型: _Field_size_(DimensionCount) const UINT*
各次元に沿ったスライスのサイズを要素単位で含む配列。 この配列の値は、出力テンソルで指定されたサイズと一致する必要があります。
Strides
型: _Field_size_(DimensionCount) const UINT*
入力テンソルの各次元に沿ったスライスのストライドを要素単位で含む配列。 ストライドが 1 より大きい場合は、入力テンソルの要素がスキップされる可能性があることを示します (たとえば、ストライドが 2 の場合、ディメンションに沿って 2 番目の要素ごとに選択されます)。
例
次の例では、同じ入力テンソルを使用します。
InputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]]]]
例 1. 連続するスライス
Offsets = {0, 0, 1, 2}
Sizes = {1, 1, 3, 2}
Strides = {1, 1, 1, 1}
OutputTensor: (Sizes:{1, 1, 3, 2}, DataType:FLOAT32)
[[[[ 7, 8],
[11, 12],
[15, 16]]]]
例 2. ストライド スライス
Offsets = {0, 0, 1, 0}
Sizes = {1, 1, 2, 2}
Strides = {1, 1, 2, 3}
OutputTensor: (Sizes:{1, 1, 2, 2}, DataType:FLOAT32)
[[[[ 5, 8],
[13, 16]]]]
注釈
この演算子の新しいバージョン である DML_SLICE1_OPERATOR_DESC が で DML_FEATURE_LEVEL_2_1
導入されました。
可用性
この演算子は で DML_FEATURE_LEVEL_1_0
導入されました。
テンソル制約
InputTensor と OutputTensor には、同じ DataType と DimensionCount が必要です。
Tensor のサポート
DML_FEATURE_LEVEL_4_1以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 8 | FLOAT64、FLOAT32、FLOAT16、INT64、INT32、INT16、INT8、UINT64、UINT32、UINT16、UINT8 |
OutputTensor | 出力 | 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 |
OutputTensor | 出力 | 1 から 8 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_2_1以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 4 から 5 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
OutputTensor | 出力 | 4 から 5 | FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8 |
DML_FEATURE_LEVEL_1_0以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 4 から 5 | FLOAT32、FLOAT16、INT32、INT16、UINT32、UINT16 |
OutputTensor | 出力 | 4 から 5 | FLOAT32、FLOAT16、INT32、INT16、UINT32、UINT16 |
要件
要件 | 値 |
---|---|
Header | directml.h |