共用方式為


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 }的大小{ BatchCount, ChannelCount, M, N }為 ,則矩陣乘法運算符會執行維度 {M,K} x {K,N} = {M,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 條件約束

  • AScaleTensorAZeroPointTensorBScaleTensorBZeroPointTensor 必須具有相同 的 DimensionCount
  • ATensor、BiasTensorBTensorOutputTensor 必須具有相同的 DimensionCount
  • BiasTensorOutputTensor 必須具有相同 的大小
  • ATensorAZeroPointTensorBTensorBZeroPointTensor 必須具有相同 的 DataType
  • AScaleTensor、BiasTensorBScaleTensorOutputTensor 必須具有相同的 DataType

Tensor 支援

張量 仁慈 (if context refers to kindness) 尺寸 支援的維度計數 支援的數據類型
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