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 中引入的。

张量约束

  • AScaleTensorAZeroPointTensorBScaleTensorBZeroPointTensor 必须具有相同的 DimensionCount
  • ATensorBiasTensorBTensorOutputTensor 必须具有相同的 DimensionCount
  • BiasTensorOutputTensor 必须具有相同的 Sizes
  • ATensorAZeroPointTensorBTensorBZeroPointTensor 必须具有相同的 DataType
  • AScaleTensorBiasTensorBScaleTensorOutputTensor 必须具有相同的 DataType

张量支持

张量 种类 维度 支持的维度计数 支持的数据类型
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