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