DML_ONE_HOT_OPERATOR_DESC構造体 (directml.h)

1 ホットエンコード値で満たされたテンソルを生成します。 この演算子は出力テンソルを生成します。選択した軸内のすべてのシーケンスに対して、そのシーケンス内の 1 つの要素を除くすべての要素が OffValue に設定され、残りの 1 つの要素が OnValue に設定されます。 シーケンスは、OutputTensorAxis ディメンションに沿って存在する要素のセットの 1 つを参照します。

各シーケンスの OnValue の場所と OnValue/OffValue の選択は、 それぞれ、インデックステンソルValuesTensor によって決まります。

構文

struct DML_ONE_HOT_OPERATOR_DESC {
  const DML_TENSOR_DESC *IndicesTensor;
  const DML_TENSOR_DESC *ValuesTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  Axis;
};

メンバー

IndicesTensor

型: const DML_TENSOR_DESC*

に沿った各シーケンスの OnValue 要素のインデックスを含むテンソル。 インデックスは、シーケンスの先頭 (テンソルの先頭ではなく) に対して相対的に測定されます。 たとえば、インデックス 0 は、軸内のすべてのシーケンスの最初の要素を常に参照します。

シーケンスのインデックス値が OutputTensorAxis ディメンションに沿った要素の数を超える場合、そのインデックス値は無視され、そのシーケンス内のすべての要素は OffValue に設定されます。

以降では、このテンソルで DML_FEATURE_LEVEL_3_0符号付き整数型を使用する場合、この演算子は負のインデックス値をサポートします。 負のインデックスは、シーケンスの末尾を基準として解釈されます。 たとえば、-1 のインデックスは、シーケンス内の最後の要素を参照します。

このテンソルには、Axis パラメーターで指定されたディメンションを除き、ディメンション数と OutputTensor と同じサイズが必要です。 ディメンションのサイズは 1 である必要があります。 たとえば、OutputTensor のサイズが で{2,3,4,5}、Axis が 1 の場合、インデックスTensor のサイズは である{2,1,4,5}必要があります。

ValuesTensor

型: const DML_TENSOR_DESC*

このテンソルには、少なくとも 2 つの要素が含まれている限り、任意のサイズを持つことができます。 このテンソルの 0 番目の要素は OffValue として解釈され、サイズ >1 の最も急速に変化するディメンションに沿った 1 番目の要素は OnValue として解釈されます。

OutputTensor

型: const DML_TENSOR_DESC*

結果を書き込む出力テンソル。 このテンソルには、Axis パラメーターで指定されたディメンションを除き、ディメンションの数とサイズがインデックスのTensor と等しい必要があります。 このテンソルの ディメンションのサイズには、0 より大きい値を指定できます。

Axis

型: UINT

一緒に 1 ホット エンコード シーケンスを生成するディメンションのインデックス。 この値は 、IndicesTensor の DimensionCount より小さくする必要があります。

例 1

IndicesTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[0],
   [3],
   [2]]]]
   
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]

Axis: 3

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 0, 0, 0],    // The one-hot encoding is formed across the rows
   [0, 0, 0, 1],
   [0, 0, 1, 0]]]]

例 2. 別の軸を使用する

IndicesTensor: (Sizes:{1,1,1,4}, DataType:UINT32)
[[[[0, 2, 1, 0]]]]
   
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]

Axis: 2

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 0, 0, 1],    // The one-hot encoding is formed across the columns
   [0, 0, 1, 0],
   [0, 1, 0, 0]]]]

例 3. 異なるオン/オフ値の使用

IndicesTensor: (Sizes:{1,1,3,1}, DataType:UINT32)
[[[[0],
   [3],
   [2]]]]
   
ValuesTensor: (Sizes:{1,1,3,1}, DataType:FLOAT32)
[[[[4],    // off value
   [2],    // on value
   [9]]]] // unused

Axis: 3

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 4, 4, 4],
   [4, 4, 4, 2],
   [4, 4, 2, 4]]]]

例 4. 負のインデックスと範囲外のインデックス

IndicesTensor: (Sizes:{1,1,3,1}, DataType:INT32)
[[[[ -3],
   [100],
   [  3]]]]
   
ValuesTensor: (Sizes:{1,1,1,2}, DataType:FLOAT32)
[[[[0, 1]]]]

Axis: 3

OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[0, 1, 0, 0],    // negative indices count from the end
   [0, 0, 0, 0],    // out-of-bounds indices are ignored; all elements are set to OffValue
   [0, 0, 0, 1]]]]

注釈

可用性

この演算子は で DML_FEATURE_LEVEL_2_0導入されました。

テンソル制約

  • インデックスTensorOutputTensorValuesTensor は同じ DimensionCount を持つ必要があります。
  • OutputTensorValuesTensor には、同じ DataType が必要です。

Tensor のサポート

DML_FEATURE_LEVEL_4_1以上

テンソル 種類 サポートされているディメンション数 サポートされるデータ型
IndicesTensor 入力 1 から 8 INT64、INT32、UINT64、UINT32
ValuesTensor 入力 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以上

テンソル 種類 サポートされているディメンション数 サポートされるデータ型
IndicesTensor 入力 1 から 8 INT64、INT32、UINT64、UINT32
ValuesTensor 入力 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以上

テンソル 種類 サポートされているディメンション数 サポートされるデータ型
IndicesTensor 入力 4 UINT32
ValuesTensor 入力 4 FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8
OutputTensor 出力 4 FLOAT32、FLOAT16、INT32、INT16、INT8、UINT32、UINT16、UINT8

DML_FEATURE_LEVEL_2_0以上

テンソル 種類 サポートされているディメンション数 サポートされるデータ型
IndicesTensor 入力 4 UINT32
ValuesTensor 入力 4 FLOAT32、FLOAT16
OutputTensor 出力 4 FLOAT32、FLOAT16

要件

要件
サポートされている最小のクライアント Windows 10バージョン 2004 (10.0;ビルド 19041)
サポートされている最小のサーバー Windows Server バージョン 2004 (10.0;ビルド 19041)
Header directml.h