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 descatar las entradas, luego realizar la multiplicación de matriz y, a continuación, cuantizar la salida.
Este operador requiere que la matriz multiplique los tensores de entrada para que sean 4D con formato { 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 Tamaños de { BatchCount, ChannelCount, M, K }
, y BTensor tiene Tamaños de { BatchCount, ChannelCount, K, N }
y OutputTensor tiene Tamaños de { BatchCount, ChannelCount, M, N }
, el operador de multiplicación de matriz realizará las multiplicaciones de matrices independientes de BatchCount * ChannelCount de dimensiones {M,K} x {K,N} = {M,N}.
Función Dequantize
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 de AScaleTensor
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. Estos valores de escala se usan para desquantizar los valores A.
AZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensor opcional que contiene los datos de punto cero de ATensor . Las dimensiones esperadas de AZeroPointTensor 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. 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 de BScaleTensor
son { 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 .
BZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensor opcional que contiene los datos de punto cero de BTensor . Las dimensiones esperadas de BZeroPointTensor
son { 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 BTensor .
OutputScaleTensor
Tipo: const DML_TENSOR_DESC*
Tensor que contiene los datos de escalado de OutputTensor . Las dimensiones esperadas de 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 outputTensor .
OutputZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Tensor opcional que contiene los datos de punto cero outputTensor . Las dimensiones esperadas de 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 outputTensor .
OutputTensor
Tipo: const DML_TENSOR_DESC*
Tensor en el que se van a escribir los resultados. Las dimensiones de este tensor son { BatchCount, ChannelCount, M, N }
.
Disponibilidad
Este operador se introdujo en DML_FEATURE_LEVEL_2_1
.
Restricciones tensor
- AScaleTensor, AZeroPointTensor, BScaleTensor, BZeroPointTensor, OutputScaleTensor y OutputZeroPointTensor deben tener el mismo DimensionCount.
- 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, OutputScaleTensor y OutputZeroPointTensor deben tener el mismo DimensionCount.
- ATensor y AZeroPointTensor deben tener el mismo DataType.
Compatibilidad con Tensor
DML_FEATURE_LEVEL_4_0 y versiones posteriores
Tensor | Clase | 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 | Resultados | De 2 a 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_2_1 y versiones posteriores
Tensor | Clase | 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 | Resultados | 4 | INT8, UINT8 |
Requisitos
Cliente mínimo compatible | compilación 20348 de Windows 10 |
Servidor mínimo compatible | compilación 20348 de Windows 10 |
Encabezado | directml.h |