Поделиться через


структура DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC (directml.h)

Выполняет следующую линейную функцию квантизации для каждого элемента в InputTensor относительно соответствующего элемента в ScaleTensor и ZeroPointTensor, помещая результаты в соответствующий элемент OutputTensor.

// For uint8 output, Min = 0, Max = 255
// For int8 output, Min = -128, Max = 127
f(input, scale, zero_point) = clamp(round(input / scale) + zero_point, Min, Max)

Квантизация включает преобразование в тип данных с более низкой точностью для ускорения арифметики. Это распространенный способ повышения производительности за счет точности. Группу 8-разрядных значений можно вычислить быстрее, чем группа из 32-разрядных значений.

Синтаксис

struct DML_ELEMENT_WISE_QUANTIZE_LINEAR_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *ScaleTensor;
  const DML_TENSOR_DESC *ZeroPointTensor;
  const DML_TENSOR_DESC *OutputTensor;
};

Члены

InputTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий входные данные.

ScaleTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий шкалы.

Заметка

Значение шкалы 0 приводит к неопределенному поведению.

Если InputTensorINT32, ScaleTensor должен быть FLOAT32. В противном случае ScaleTensor должны иметь одинаковые DataType, что и InputTensor.

ZeroPointTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий нужную нулевой точку для квантизации.

OutputTensor

Тип: const DML_TENSOR_DESC*

Выходной тензор для записи результатов.

Наличие

Этот оператор появился в DML_FEATURE_LEVEL_1_0.

Ограничения Tensor

  • InputTensor, OutputTensor, ScaleTensorScaleTensor и ZeroPointTensor должны иметь одинаковые и Размеры.
  • OutputTensor и ZeroPointTensor должны иметь одинаковые DataType.

Поддержка Tensor

DML_FEATURE_LEVEL_6_2 и выше

Тензор Добрый Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Ввод От 1 до 8 FLOAT32, FLOAT16, INT32
ScaleTensor Ввод От 1 до 8 FLOAT32, FLOAT16
ZeroPointTensor Необязательные входные данные От 1 до 8 INT8, UINT8
OutputTensor Выпуск От 1 до 8 INT8, UINT8

DML_FEATURE_LEVEL_6_0 и выше

Тензор Добрый Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Ввод От 1 до 8 FLOAT32, FLOAT16, INT32
ScaleTensor Ввод От 1 до 8 FLOAT32, FLOAT16
ZeroPointTensor Ввод От 1 до 8 INT8, UINT8
OutputTensor Выпуск От 1 до 8 INT8, UINT8

DML_FEATURE_LEVEL_3_0 и выше

Тензор Добрый Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Ввод От 1 до 8 FLOAT32, INT32
ScaleTensor Ввод От 1 до 8 FLOAT32
ZeroPointTensor Ввод От 1 до 8 INT8, UINT8
OutputTensor Выпуск От 1 до 8 INT8, UINT8

DML_FEATURE_LEVEL_2_1 и выше

Тензор Добрый Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Ввод 4 FLOAT32, INT32
ScaleTensor Ввод 4 FLOAT32
ZeroPointTensor Ввод 4 INT8, UINT8
OutputTensor Выпуск 4 INT8, UINT8

DML_FEATURE_LEVEL_1_0 и выше

Тензор Добрый Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Ввод 4 FLOAT32
ScaleTensor Ввод 4 FLOAT32
ZeroPointTensor Ввод 4 UINT8
OutputTensor Выпуск 4 UINT8

Требования

Требование Ценность
заголовка directml.h

См. также

DML_ELEMENT_WISE_DEQUANTIZE_LINEAR_OPERATOR_DESC