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


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

Выполняет свертку FilterTensor с InputTensor. Этот оператор выполняет переадресацию в квантизованных данных. Этот оператор математически эквивалентен деквиализации входных данных, сверток, а затем квантизации выходных данных.

Квантизация линейных функций, используемых этим оператором, — это функции линейной квантизации.

Декванциализация функции

f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale

Функция Quantize

f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)

Синтаксис

struct DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *InputScaleTensor;
  const DML_TENSOR_DESC *InputZeroPointTensor;
  const DML_TENSOR_DESC *FilterTensor;
  const DML_TENSOR_DESC *FilterScaleTensor;
  const DML_TENSOR_DESC *FilterZeroPointTensor;
  const DML_TENSOR_DESC *BiasTensor;
  const DML_TENSOR_DESC *OutputScaleTensor;
  const DML_TENSOR_DESC *OutputZeroPointTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  DimensionCount;
  const UINT            *Strides;
  const UINT            *Dilations;
  const UINT            *StartPadding;
  const UINT            *EndPadding;
  UINT                  GroupCount;
};

Члены

InputTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий входные данные. Ожидаемые размеры InputTensor{ InputBatchCount, InputChannelCount, InputHeight, InputWidth }.

InputScaleTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий входные данные масштабирования. Ожидаемые размеры InputScaleTensor{ 1, 1, 1, 1 }. Это значение масштабирования используется для декванизации входных значений.

Заметка

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

InputZeroPointTensor

Тип: _Возможноnull_ const DML_TENSOR_DESC*

Необязательный тензор, содержащий входные данные нулевой точки. Ожидаемые измерения InputZeroPointTensor{ 1, 1, 1, 1 }. Это значение нулевой точки используется для декванизации входных значений.

FilterTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий данные фильтра. Ожидаемые измерения FilterTensor{ FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }.

FilterScaleTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий данные масштабирования фильтра. Ожидаемые измерения FilterScaleTensor{ 1, 1, 1, 1 }, если требуется тензорная квантизация или { 1, OutputChannelCount, 1, 1 }, если требуется квантизация каналов. Это значение масштабирования используется для декванизации значений фильтра.

Заметка

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

FilterZeroPointTensor

Тип: _Возможноnull_ const DML_TENSOR_DESC*

Необязательный тензор, содержащий данные о нулевых точках фильтра. Ожидаемые измерения FilterZeroPointTensor{ 1, 1, 1, 1 }, если требуется тензорная квантизация или { 1, OutputChannelCount, 1, 1 }, если требуется квантизация каналов. Это значение нулевой точки используется для декванизации значений фильтра.

BiasTensor

Тип: _Возможноnull_ const DML_TENSOR_DESC*

Тензор, содержащий данные предвзятости. Тензор предвзятости — это тензор, содержащий данные, которые передаются через выходной тензор в конце свертки, который добавляется в результат. Ожидаемые измерения Предвзятого элемента { 1, OutputChannelCount, 1, 1 } для 4D.

OutputScaleTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий выходные данные масштабирования. Ожидаемые измерения OutputScaleTensor { 1, 1, 1, 1 }. Это входное значение масштабирования используется для квантизации выходных значений сверток.

Заметка

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

OutputZeroPointTensor

Тип: _Возможноnull_ const DML_TENSOR_DESC*

Необязательный тензор, содержащий данные о нулевых точках фильтра. Ожидаемые измерения OutputZeroPointTensor { 1, 1, 1, 1 }. Это значение нулевой точки ввода используется для квантизации сверток выходных значений.

OutputTensor

Тип: const DML_TENSOR_DESC*

Тензор для записи результатов. Ожидаемые измерения OutputTensor { OutputBatchCount, OutputChannelCount, OutputHeight, OutputWidth }.

DimensionCount

Тип: UINT

Количество пространственных измерений для операции свертки. Пространственные измерения — это нижние измерения тензора фильтра сверток FilterTensor. Это значение также определяет размерstrides, dilations, StartPaddingи массивов EndPadding. Поддерживается только значение 2.

Strides

Тип: _Field_size_(DimensionCount) const UINT*

Шаги операции свертки. Эти шаги применяются к фильтру сверток. Они отделены от тензорных успехов, включенных в DML_TENSOR_DESC.

Dilations

Тип: _Field_size_(DimensionCount) const UINT*

Диляция операции свертывания. Диляция применяется к элементам ядра фильтра. Это влияет на имитацию ядра фильтра большего размера путем заполнения внутренних элементов ядра фильтра нулями.

StartPadding

Тип: _Field_size_(DimensionCount) const UINT*

Значения заполнения, применяемые к началу каждого пространственного измерения фильтра и тензора ввода операции свертки.

EndPadding

Тип: _Field_size_(DimensionCount) const UINT*

Значения заполнения, применяемые к концу каждого пространственного измерения фильтра и тензора ввода операции свертки.

GroupCount

Тип: UINT

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

Наличие

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

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

  • BiasTensor, FilterTensor, InputTensorи OutputTensor должны иметь одинаковые DimensionCount.
  • OutputTensorи OutputZeroPointTensor должны иметь одинаковые DataType.
  • InputTensor и InputZeroPointTensor должны иметь одинаковые DataType.
  • FilterTensor и FilterZeroPointTensor должны иметь одинаковые DataType.

Поддержка Tensor

DML_FEATURE_LEVEL_5_2 и выше

Тензор Добрый Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Ввод От 3 до 4 INT8, UINT8
InputScaleTensor Ввод От 1 до 4 FLOAT32
InputZeroPointTensor Необязательные входные данные От 1 до 4 INT8, UINT8
FilterTensor Ввод От 3 до 4 INT8, UINT8
FilterScaleTensor Ввод От 1 до 4 FLOAT32
FilterZeroPointTensor Необязательные входные данные От 1 до 4 INT8, UINT8
Предвзятость Необязательные входные данные От 3 до 4 INT32
OutputScaleTensor Ввод От 1 до 4 FLOAT32
OutputZeroPointTensor Необязательные входные данные От 1 до 4 INT8, UINT8
OutputTensor Выпуск От 3 до 4 INT8, UINT8

DML_FEATURE_LEVEL_4_0 и выше

Тензор Добрый Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Ввод От 3 до 4 INT8, UINT8
InputScaleTensor Ввод От 1 до 4 FLOAT32
InputZeroPointTensor Необязательные входные данные От 1 до 4 INT8, UINT8
FilterTensor Ввод От 3 до 4 INT8, UINT8
FilterScaleTensor Ввод От 3 до 4 FLOAT32
FilterZeroPointTensor Необязательные входные данные От 1 до 4 INT8, UINT8
Предвзятость Необязательные входные данные От 3 до 4 INT32
OutputScaleTensor Ввод От 1 до 4 FLOAT32
OutputZeroPointTensor Необязательные входные данные От 1 до 4 INT8, UINT8
OutputTensor Выпуск От 3 до 4 INT8, UINT8

DML_FEATURE_LEVEL_2_1 и выше

Тензор Добрый Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Ввод 4 INT8, UINT8
InputScaleTensor Ввод 4 FLOAT32
InputZeroPointTensor Необязательные входные данные 4 INT8, UINT8
FilterTensor Ввод 4 INT8, UINT8
FilterScaleTensor Ввод 4 FLOAT32
FilterZeroPointTensor Необязательные входные данные 4 INT8, UINT8
Предвзятость Необязательные входные данные 4 INT32
OutputScaleTensor Ввод 4 FLOAT32
OutputZeroPointTensor Необязательные входные данные 4 INT8, UINT8
OutputTensor Выпуск 4 INT8, UINT8

Требования

Требование Ценность
минимальные поддерживаемые клиентские Сборка Windows 10 20348
минимальный поддерживаемый сервер Сборка Windows 10 20348
заголовка directml.h