DML_ONE_HOT_OPERATOR_DESC構造体 (directml.h)
1 ホットエンコード値で満たされたテンソルを生成します。 この演算子は出力テンソルを生成します。選択した軸内のすべてのシーケンスに対して、そのシーケンス内の 1 つの要素を除くすべての要素が OffValue に設定され、残りの 1 つの要素が OnValue に設定されます。 シーケンスは、OutputTensor の Axis ディメンションに沿って存在する要素のセットの 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 は、軸内のすべてのシーケンスの最初の要素を常に参照します。
シーケンスのインデックス値が OutputTensor の Axis ディメンションに沿った要素の数を超える場合、そのインデックス値は無視され、そのシーケンス内のすべての要素は 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
導入されました。
テンソル制約
- インデックスTensor、 OutputTensor、 ValuesTensor は同じ DimensionCount を持つ必要があります。
- OutputTensor と ValuesTensor には、同じ 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 |