DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC構造体 (directml.h)
量子化されたデータに対して行列乗算関数を実行します。 この演算子は、数学的には、入力をデカンタイズしてから行列乗算を実行し、出力を量子化することと同じです。
この演算子では、行列乗算入力テンソルを 4D にし、{ BatchCount, ChannelCount, Height, Width }
として書式設定する必要があります。 行列乗算演算子は、独立した行列乗算の BatchCount * ChannelCount 数を実行します。
たとえば、
デカンタイズ関数
f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale
クオンタイズ関数
f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)
構文
struct DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC {
const DML_TENSOR_DESC *ATensor;
const DML_TENSOR_DESC *AScaleTensor;
const DML_TENSOR_DESC *AZeroPointTensor;
const DML_TENSOR_DESC *BTensor;
const DML_TENSOR_DESC *BScaleTensor;
const DML_TENSOR_DESC *BZeroPointTensor;
const DML_TENSOR_DESC *OutputScaleTensor;
const DML_TENSOR_DESC *OutputZeroPointTensor;
const DML_TENSOR_DESC *OutputTensor;
};
メンバーズ
ATensor
型: const DML_TENSOR_DESC*
A データを含むテンソル。 このテンソルの寸法は { BatchCount, ChannelCount, M, K }
する必要があります。
AScaleTensor
型: const DML_TENSOR_DESC*
ATensor スケール データを含むテンソル。 テンソル量子化が必要な場合は、AScaleTensor
の予想される次元が { 1, 1, 1, 1 }
されます。行単位の量子化が必要な場合は { 1, 1, M, 1 }
。 これらのスケール値は、A 値をデカンタイズするために使用されます。
手記
スケール値が 0 の場合、未定義の動作になります。
AZeroPointTensor
型: _Maybenull_ const DML_TENSOR_DESC*
ATensor を含む省略可能なテンソル ゼロ ポイント データです。 AZeroPointTensor の予想されるディメンションは、テンソル単位の量子化が必要な場合は { 1, 1, 1, 1 }
、行単位の量子化が必要な場合は { 1, 1, M, 1 }
されます。 これらのゼロ ポイント値は、ATensor 値をデカンタイズするために使用されます。
BTensor
型: const DML_TENSOR_DESC*
B データを含むテンソル。 このテンソルの寸法は { BatchCount, ChannelCount, K, N }
する必要があります。
BScaleTensor
型: const DML_TENSOR_DESC*
BTensor スケール データを含むテンソル。 テンソル量子化が必要な場合は、BScaleTensor
の予想される次元が { 1, 1, 1, 1 }
されます。列単位の量子化が必要な場合は { 1, 1, 1, N }
。 これらのスケール値は、BTensor 値をデカンタイズするために使用されます。
手記
スケール値が 0 の場合、未定義の動作になります。
BZeroPointTensor
型: _Maybenull_ const DML_TENSOR_DESC*
BTensor を含む省略可能なテンソル ゼロ ポイント データです。 テンソル量子化が必要な場合は、BZeroPointTensor
の予想される次元が { 1, 1, 1, 1 }
されます。列単位の量子化が必要な場合は { 1, 1, 1, N }
。 これらのゼロ ポイント値は、BTensor 値をデカンタイズするために使用されます。
OutputScaleTensor
型: const DML_TENSOR_DESC*
OutputTensor スケール データを含むテンソル。 テンソル単位量子化が必要な場合は、OutputScaleTensor
の予想される次元が { 1, 1, 1, 1 }
されます。行単位量子化が必要な場合は { 1, 1, M, 1 }
。 このスケール値は、OutputTensor 値をデカンタイズするために使用されます。
手記
スケール値が 0 の場合、未定義の動作になります。
OutputZeroPointTensor
型: _Maybenull_ const DML_TENSOR_DESC*
OutputTensor を含む省略可能なテンソル ゼロ ポイント データです。 テンソル単位量子化が必要な場合は、OutputZeroPointTensor
の予想される次元が { 1, 1, 1, 1 }
されます。行単位量子化が必要な場合は { 1, 1, M, 1 }
。 このゼロ ポイント値は、OutputTensor 値をデカンタイズするために使用されます。
OutputTensor
型: const DML_TENSOR_DESC*
結果を書き込むテンソル。 このテンソルの寸法は { BatchCount, ChannelCount, M, N }
。
可用性
この演算子は、DML_FEATURE_LEVEL_2_1
で導入されました。
Tensor 制約
AScaleTensor 、AZeroPointTensor 、BScaleTensor 、BZeroPointTensor 、OutputScaleTensor 、および OutputZeroPointTensor は、DimensionCountと同じである必要があります。 - ATensor、BTensor、および OutputTensor には、同じ DimensionCountが必要です。
- BZeroPointTensor と
BZeroPointTensor 、DataType が同じである必要があります。 OutputTensor と OutputZeroPointTensorは、同じ DataType を持っている必要があります。AScaleTensor 、AZeroPointTensor 、BScaleTensor 、BZeroPointTensor 、OutputScaleTensor 、および OutputZeroPointTensor は、DimensionCountと同じである必要があります。 - ATensor
と AZeroPointTensor は、同じ DataType を持つ必要があります。
Tensor のサポート
DML_FEATURE_LEVEL_4_0以上
テンソル | 種類 | サポートされているディメンション数 | サポートされているデータ型 |
---|---|---|---|
ATensor | インプット | 2 ~ 4 | INT8、UINT8 |
AScaleTensor | インプット | 1 ~ 4 | FLOAT32 |
AZeroPointTensor | 省略可能な入力 | 1 ~ 4 | INT8、UINT8 |
BTensor | インプット | 2 ~ 4 | INT8、UINT8 |
BScaleTensor | インプット | 1 ~ 4 | FLOAT32 |
BZeroPointTensor | 省略可能な入力 | 1 ~ 4 | INT8、UINT8 |
OutputScaleTensor | インプット | 1 ~ 4 | FLOAT32 |
OutputZeroPointTensor | 省略可能な入力 | 1 ~ 4 | INT8、UINT8 |
OutputTensor | アウトプット | 2 ~ 4 | INT8、UINT8 |
DML_FEATURE_LEVEL_2_1以降
テンソル | 種類 | サポートされているディメンション数 | サポートされているデータ型 |
---|---|---|---|
ATensor | インプット | 4 | INT8、UINT8 |
AScaleTensor | インプット | 4 | FLOAT32 |
AZeroPointTensor | 省略可能な入力 | 4 | INT8、UINT8 |
BTensor | インプット | 4 | INT8、UINT8 |
BScaleTensor | インプット | 4 | FLOAT32 |
BZeroPointTensor | 省略可能な入力 | 4 | INT8、UINT8 |
OutputScaleTensor | インプット | 4 | FLOAT32 |
OutputZeroPointTensor | 省略可能な入力 | 4 | INT8、UINT8 |
OutputTensor | アウトプット | 4 | INT8、UINT8 |
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 10 ビルド 20348 |
サポートされる最小サーバー | Windows 10 ビルド 20348 |
ヘッダー | directml.h |