次の方法で共有


DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC構造体 (directml.h)

量子化されたデータに対して行列乗算関数を実行します。 この演算子は、数学的には、入力をデカンタイズしてから行列乗算を実行し、出力を量子化することと同じです。

この演算子では、行列乗算入力テンソルを 4D にし、{ BatchCount, ChannelCount, Height, Width }として書式設定する必要があります。 行列乗算演算子は、独立した行列乗算の BatchCount * ChannelCount 数を実行します。

たとえば、ATensor サイズがあり、BTensor のサイズが である場合、および outputTensor には、サイズがあり、行列乗算演算子は、ディメンション {M,K} x {K,N} = {M,N} の 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 制約

  • AScaleTensorAZeroPointTensorBScaleTensorBZeroPointTensorOutputScaleTensor、および OutputZeroPointTensor は、DimensionCountと同じ である必要があります。
  • ATensorBTensor、および OutputTensor には、同じ DimensionCountが必要です。
  • BZeroPointTensor と BZeroPointTensor 、DataTypeが同じである必要があります。
  • OutputTensor と OutputZeroPointTensor は、同じ DataTypeを持っている必要があります。
  • AScaleTensorAZeroPointTensorBScaleTensorBZeroPointTensorOutputScaleTensor、および 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