Compartir a través de


estructura DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC (directml.h)

Realiza una función de multiplicación de matriz en datos cuantificados. Este operador es matemáticamente equivalente a desquitizar las entradas, luego realizar la multiplicación de la matriz y, a continuación, cuantificar la salida.

Este operador requiere que la matriz multiplique los tensores de entrada que tienen el formato 4D como { BatchCount, ChannelCount, Height, Width }. El operador de multiplicación de matriz realizará BatchCount * ChannelCount número de multiplicaciones de matriz independientes.

Por ejemplo, si ATensor tiene Sizes de { BatchCount, ChannelCount, M, K }y BTensor tiene Sizes de { BatchCount, ChannelCount, K, N }y El OutputTensor tiene Tamaños de { BatchCount, ChannelCount, M, N }, el operador de multiplicación de matriz realizará multiplicaciones de matriz independientes de BatchCount * ChannelCount de dimensiones {M,K} x {K,N} = {M,N}.

Desquantize (función)

f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale

Quantize (función)

f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)

Sintaxis

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;
};

Miembros

ATensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos A. Las dimensiones de este tensor deben ser { BatchCount, ChannelCount, M, K }.

AScaleTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos de escala de ATensor. Las dimensiones esperadas del AScaleTensor se { 1, 1, 1, 1 } si se requiere la cuantificación por tensor o { 1, 1, M, 1 } si se requiere la cuantificación por fila. Estos valores de escala se usan para desquiantizar los valores A.

Nota

Un valor de escala de 0 da como resultado un comportamiento indefinido.

AZeroPointTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional que contiene el ATensor datos de punto cero. Las dimensiones esperadas de AZeroPointTensor se { 1, 1, 1, 1 } si se requiere la cuantificación por tensor o { 1, 1, M, 1 } si se requiere la cuantificación por fila. Estos valores de punto cero se usan para desquiantizar los valores de ATensor.

BTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos B. Las dimensiones de este tensor deben ser { BatchCount, ChannelCount, K, N }.

BScaleTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos de escala de BTensor. Las dimensiones esperadas del BScaleTensor se { 1, 1, 1, 1 } si se requiere la cuantificación por tensor o { 1, 1, 1, N } si se requiere la cuantificación por columna. Estos valores de escala se usan para desquiantizar los valores de BTensor.

Nota

Un valor de escala de 0 da como resultado un comportamiento indefinido.

BZeroPointTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional que contiene el BTensor datos de punto cero. Las dimensiones esperadas del BZeroPointTensor se { 1, 1, 1, 1 } si se requiere la cuantificación por tensor o { 1, 1, 1, N } si se requiere la cuantificación por columna. Estos valores de punto cero se usan para desquiantizar los valores de BTensor.

OutputScaleTensor

Tipo: const DML_TENSOR_DESC*

Tensor que contiene los datos de escalado de OutputTensor. Las dimensiones esperadas del OutputScaleTensor son { 1, 1, 1, 1 } si se requiere la cuantificación por tensor o { 1, 1, M, 1 } si se requiere la cuantificación por fila. Este valor de escala se usa para desquiantizar los valores de OutputTensor.

Nota

Un valor de escala de 0 da como resultado un comportamiento indefinido.

OutputZeroPointTensor

Tipo: _Maybenull_ const DML_TENSOR_DESC*

Tensor opcional que contiene el OutputTensor datos de punto cero. Las dimensiones esperadas del OutputZeroPointTensor son { 1, 1, 1, 1 } si se requiere la cuantificación por tensor o { 1, 1, M, 1 } si se requiere la cuantificación por fila. Este valor de punto cero se usa para desquiantizar los valores de OutputTensor.

OutputTensor

Tipo: const DML_TENSOR_DESC*

Tensor en el que escribir los resultados. Las dimensiones de este tensor se { BatchCount, ChannelCount, M, N }.

Disponibilidad

Este operador se introdujo en DML_FEATURE_LEVEL_2_1.

Restricciones tensor

  • AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensory OutputZeroPointTensor debe tener el mismo DimensionCount.
  • de ATensor , BTensor y OutputTensor deben tener el mismo DimensionCount.
  • BTensor y BZeroPointTensor deben tener el mismo DataType.
  • outputTensor y OutputZeroPointTensor deben tener el mismo DataType.
  • AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensory OutputZeroPointTensor debe tener el mismo DimensionCount.
  • ATensor y AZeroPointTensor deben tener el mismo DataType.

Compatibilidad con Tensor

DML_FEATURE_LEVEL_4_0 y versiones posteriores

Tensor Amable Recuentos de dimensiones admitidos Tipos de datos admitidos
ATensor Entrada De 2 a 4 INT8, UINT8
AScaleTensor Entrada De 1 a 4 FLOAT32
AZeroPointTensor Entrada opcional De 1 a 4 INT8, UINT8
BTensor Entrada De 2 a 4 INT8, UINT8
BScaleTensor Entrada De 1 a 4 FLOAT32
BZeroPointTensor Entrada opcional De 1 a 4 INT8, UINT8
OutputScaleTensor Entrada De 1 a 4 FLOAT32
OutputZeroPointTensor Entrada opcional De 1 a 4 INT8, UINT8
OutputTensor Salida De 2 a 4 INT8, UINT8

DML_FEATURE_LEVEL_2_1 y versiones posteriores

Tensor Amable Recuentos de dimensiones admitidos Tipos de datos admitidos
ATensor Entrada 4 INT8, UINT8
AScaleTensor Entrada 4 FLOAT32
AZeroPointTensor Entrada opcional 4 INT8, UINT8
BTensor Entrada 4 INT8, UINT8
BScaleTensor Entrada 4 FLOAT32
BZeroPointTensor Entrada opcional 4 INT8, UINT8
OutputScaleTensor Entrada 4 FLOAT32
OutputZeroPointTensor Entrada opcional 4 INT8, UINT8
OutputTensor Salida 4 INT8, UINT8

Requisitos

Requisito Valor
cliente mínimo admitido Compilación 20348 de Windows 10
servidor mínimo admitido Compilación 20348 de Windows 10
encabezado de directml.h