次の方法で共有


DML_MATRIX_MULTIPLY_INTEGER_TO_FLOAT_OPERATOR_DESC 構造体 (directml.h)

整数入力テンソル データに対してマトリックス乗算関数を実行し、浮動小数点出力を生成します。

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

たとえば、ATensorサイズ{ BatchCount, ChannelCount, M, K }BTensorサイズ{ BatchCount, ChannelCount, K, N }、および OutputTensorサイズ{ BatchCount, ChannelCount, M, N } の場合、マトリックス乗算演算子は、次元 {M,K} x {K,N} = {M,N} の BatchCount * ChannelCount 独立マトリックス乗算を実行します。

重要

この API は、DirectML スタンドアロン再頒布可能パッケージの一部として使用できます (Microsoft.AI.DirectML バージョン 1.13 以降を参照してください)。 DirectML バージョン履歴も参照してください。

構文

struct DML_MATRIX_MULTIPLY_INTEGER_TO_FLOAT_OPERATOR_DESC
{
    const DML_TENSOR_DESC* ATensor;
    const DML_TENSOR_DESC* AScaleTensor;
    _Maybenull_ const DML_TENSOR_DESC* AZeroPointTensor;
    const DML_TENSOR_DESC* BTensor;
    const DML_TENSOR_DESC* BScaleTensor;
    _Maybenull_ const DML_TENSOR_DESC* BZeroPointTensor;
    _Maybenull_ const DML_TENSOR_DESC* BiasTensor;
    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 } です。 これらのスケール値は、ATensor 値をデカンタイズするために使用されます。

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 値をデカンタイズするために使用されます。

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 値をデカンタイズするために使用されます。

OutputZeroPointTensor

型: _Maybenull_ const DML_TENSOR_DESC*

OutputTensor のゼロ ポイント データを含む省略可能なテンソル。 OutputZeroPointTensor の予想される次元は、テンソル単位の量子化が必要な場合は { 1, 1, 1, 1 }、行単位の量子化が必要な場合は { 1, 1, M, 1 } です。 このゼロ ポイント値は、OutputTensor 値をデカンタイズするために使用されます。

BiasTensor

型: _Maybenull_ const DML_TENSOR_DESC*

バイアス データを含む省略可能なテンソル。 指定した場合、このテンソルの サイズ は出力サイズ { BatchCount, ChannelCount, M, N } と一致する必要があります。

OutputTensor

型: const DML_TENSOR_DESC*

結果を書き込む先のテンソル。 このテンソルの次元は { BatchCount, ChannelCount, M, N } です。

可用性

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

Tensor 制約

  • AScaleTensorAZeroPointTensorBScaleTensor、および BZeroPointTensor は、同じ DimensionCount を持つ必要があります。
  • ATensorBiasTensorBTensor、および OutputTensor は、同じ DimensionCount を持つ必要があります。
  • BiasTensorOutputTensorサイズは同じである必要があります。
  • ATensorAZeroPointTensorBTensorBZeroPointTensor は、同じ DataType を持つ必要があります。
  • AScaleTensorBiasTensorBScaleTensor、および OutputTensor は、同じ DataType を持つ必要があります。

Tensor のサポート

Tensor 種類 Dimensions サポートされているディメンション数 サポートされるデータ型
ATensor 入力 { [BatchCount], [ChannelCount], M, K } 2 から 4 INT32、INT16、INT8、UINT32、UINT16、UINT8
AScaleTensor 入力 { AScaleDimensions[] } 1 から 4 FLOAT32、FLOAT16
AZeroPointTensor 省略可能な入力 { [1], [1], AZeroPointCount, [1] } 1 から 4 INT32、INT16、INT8、UINT32、UINT16、UINT8
BTensor 入力 { [BatchCount], [ChannelCount], K, N } 2 から 4 INT32、INT16、INT8、UINT32、UINT16、UINT8
BScaleTensor 入力 { BScaleDimensions[] } 1 から 4 FLOAT32、FLOAT16
BZeroPointTensor 省略可能な入力 { [1], [1], [1], BZeroPointCount } 1 から 4 INT32、INT16、INT8、UINT32、UINT16、UINT8
BiasTensor 省略可能な入力 { [BatchCount], [ChannelCount], M, N } 2 から 4 FLOAT32、FLOAT16
OutputTensor 出力 { [BatchCount], [ChannelCount], M, N } 2 から 4 FLOAT32、FLOAT16

要件

   
ヘッダー directml.h