次の方法で共有


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

ディメンションの数。 このフィールドは、 OffsetsSizesStrides 配列のサイズを決定します。 この値は、入力テンソルと出力テンソルの 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導入されました。

テンソル制約

InputTensorOutputTensor には、同じ DataTypeDimensionCount が必要です。

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