структура 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 |