在整數輸入張量數據上執行矩陣乘法函數,併產生浮點輸出。
此運算子需要矩陣乘以輸入張量為 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 條件約束
- AScaleTensor、 AZeroPointTensor、 BScaleTensor 和 BZeroPointTensor 必須具有相同 的 DimensionCount。
- ATensor、BiasTensor、BTensor 和 OutputTensor 必須具有相同的 DimensionCount。
- BiasTensor 和 OutputTensor 必須具有相同 的大小。
- ATensor、 AZeroPointTensor、 BTensor 和 BZeroPointTensor 必須具有相同 的 DataType。
- AScaleTensor、BiasTensor、BScaleTensor 和 OutputTensor 必須具有相同的 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 |