структура DML_QUANTIZED_LINEAR_MATRIX_MULTIPLY_OPERATOR_DESC (directml.h)
Выполняет функцию умножения матрицы для квантизованных данных. Этот оператор математически эквивалентен деквализовать входные данные, а затем умножить матрицу, а затем квалифицировать выходные данные.
Для этого оператора требуется, чтобы матрица умножала тензоры ввода 4D, которые форматируются как { BatchCount, ChannelCount, Height, Width }
. Оператор умножения матрицы выполнит batchCount * ChannelCount число независимых умножений матрицы.
Например, если
Декванциализация функции
f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale
Функция Quantize
f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)
Синтаксис
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;
};
Члены
ATensor
Тип: const DML_TENSOR_DESC*
Тензор, содержащий данные A. Измерения этого тензора должны быть { BatchCount, ChannelCount, M, K }
.
AScaleTensor
Тип: const DML_TENSOR_DESC*
Тензор, содержащий данные масштабирования ATensor. Ожидаемые измерения AScaleTensor
{ 1, 1, 1, 1 }
, если требуется тензорная квантизация или { 1, 1, M, 1 }
, если требуется квантизация строк. Эти значения масштабирования используются для декванизации значений A.
Заметка
Значение шкалы 0 приводит к неопределенному поведению.
AZeroPointTensor
Тип: _Возможноnull_ const DML_TENSOR_DESC*
Необязательный тензор, содержащий ATensor данные нулевой точки. Ожидаемые измерения AZeroPointTensor { 1, 1, 1, 1 }
, если требуется тензорная квантизация или { 1, 1, M, 1 }
, если требуется квантизация строк. Эти значения нулевой точки используются для декванизации значений ATensor.
BTensor
Тип: const DML_TENSOR_DESC*
Тензор, содержащий данные B. Измерения этого тензора должны быть { BatchCount, ChannelCount, K, N }
.
BScaleTensor
Тип: const DML_TENSOR_DESC*
Тензор, содержащий данные BTensor масштабирования. Ожидаемые измерения BScaleTensor
{ 1, 1, 1, 1 }
, если требуется тензорная квантизация или { 1, 1, 1, N }
, если требуется квантизация столбцов. Эти значения масштабирования используются для декванизации значений BTensor.
Заметка
Значение шкалы 0 приводит к неопределенному поведению.
BZeroPointTensor
Тип: _Возможноnull_ const DML_TENSOR_DESC*
Необязательный тензор, содержащий BTensor данные нулевой точки. Ожидаемые измерения BZeroPointTensor
{ 1, 1, 1, 1 }
, если требуется тензорная квантизация или { 1, 1, 1, N }
, если требуется квантизация столбцов. Эти значения нулевой точки используются для декванизации значений BTensor.
OutputScaleTensor
Тип: const DML_TENSOR_DESC*
Тензор, содержащий данные OutputTensor масштабирования. Ожидаемые измерения OutputScaleTensor
{ 1, 1, 1, 1 }
, если требуется квантизация на тензор, или { 1, 1, M, 1 }
, если требуется квантизация для каждой строки. Это значение масштабирования используется для декванизации значений OutputTensor.
Заметка
Значение шкалы 0 приводит к неопределенному поведению.
OutputZeroPointTensor
Тип: _Возможноnull_ const DML_TENSOR_DESC*
Необязательный тензор, содержащий данные OutputTensor нулевой точки. Ожидаемые измерения OutputZeroPointTensor
{ 1, 1, 1, 1 }
, если требуется квантизация на тензор, или { 1, 1, M, 1 }
, если требуется квантизация для каждой строки. Это значение нулевой точки используется для декванизации значений OutputTensor.
OutputTensor
Тип: const DML_TENSOR_DESC*
Тензор для записи результатов. Измерения тензора { BatchCount, ChannelCount, M, N }
.
Наличие
Этот оператор появился в DML_FEATURE_LEVEL_2_1
.
Ограничения Tensor
AScaleTensor ,AZeroPointTensor ,BScaleTensor ,BZeroPointTensor ,OutputScaleTensor иOutputZeroPointTensor должны иметь то жеDimensionCount .- ATensor, BTensorи OutputTensor должны иметь одинаковые DimensionCount.
- BTensor и BZeroPointTensor должны иметь одинаковые DataType.
- OutputTensorи OutputZeroPointTensor должны иметь одинаковые DataType.
AScaleTensor ,AZeroPointTensor ,BScaleTensor ,BZeroPointTensor ,OutputScaleTensor иOutputZeroPointTensor должны иметь то жеDimensionCount .- ATensor и AZeroPointTensor должны иметь одинаковые DataType.
Поддержка Tensor
DML_FEATURE_LEVEL_4_0 и выше
Тензор | Добрый | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
ATensor | Ввод | От 2 до 4 | INT8, UINT8 |
AScaleTensor | Ввод | От 1 до 4 | FLOAT32 |
AZeroPointTensor | Необязательные входные данные | От 1 до 4 | INT8, UINT8 |
BTensor | Ввод | От 2 до 4 | INT8, UINT8 |
BScaleTensor | Ввод | От 1 до 4 | FLOAT32 |
BZeroPointTensor | Необязательные входные данные | От 1 до 4 | INT8, UINT8 |
OutputScaleTensor | Ввод | От 1 до 4 | FLOAT32 |
OutputZeroPointTensor | Необязательные входные данные | От 1 до 4 | INT8, UINT8 |
OutputTensor | Выпуск | От 2 до 4 | INT8, UINT8 |
DML_FEATURE_LEVEL_2_1 и выше
Тензор | Добрый | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
ATensor | Ввод | 4 | INT8, UINT8 |
AScaleTensor | Ввод | 4 | FLOAT32 |
AZeroPointTensor | Необязательные входные данные | 4 | INT8, UINT8 |
BTensor | Ввод | 4 | INT8, UINT8 |
BScaleTensor | Ввод | 4 | FLOAT32 |
BZeroPointTensor | Необязательные входные данные | 4 | INT8, UINT8 |
OutputScaleTensor | Ввод | 4 | FLOAT32 |
OutputZeroPointTensor | Необязательные входные данные | 4 | INT8, UINT8 |
OutputTensor | Выпуск | 4 | INT8, UINT8 |
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Сборка Windows 10 20348 |
минимальный поддерживаемый сервер | Сборка Windows 10 20348 |
заголовка | directml.h |