структура DML_CONVOLUTION_INTEGER_OPERATOR_DESC (directml.h)
Выполняет свертывание фильтра FilterTensor с inputTensor. Этот оператор выполняет прямую сверку для целочисленных данных. Необязательные тензоры нулевой точки также можно использовать для вычитания значений нулевой точки из входного и фильтруемого тензора.
Синтаксис
struct DML_CONVOLUTION_INTEGER_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *InputZeroPointTensor;
const DML_TENSOR_DESC *FilterTensor;
const DML_TENSOR_DESC *FilterZeroPointTensor;
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 — { BatchCount, InputChannelCount, InputHeight, InputWidth }
.
InputZeroPointTensor
Тип: _Maybenull_ const DML_TENSOR_DESC*
Необязательный тензор, содержащий входные данные нулевой точки. Ожидаемые размеры InputZeroPointTensor — { 1, 1, 1, 1 }
.
FilterTensor
Тип: const DML_TENSOR_DESC*
Тензор, содержащий данные фильтра. Ожидаемые размеры FilterTensor — { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }
.
FilterZeroPointTensor
Тип: _Maybenull_ const DML_TENSOR_DESC*
Необязательный тензор, содержащий данные нулевой точки фильтра. Ожидаемые измерения FilterZeroPointTensor определяются, если требуется { 1, 1, 1, 1 }
квантование по тензору или { 1, OutputChannelCount, 1, 1 }
требуется квантование по каналу.
OutputTensor
Тип: const DML_TENSOR_DESC*
Тензор для записи результатов. Ожидаемые размеры OutputTensor — { BatchCount, OutputChannelCount, OutputHeight, OutputWidth }
.
DimensionCount
Тип: UINT
Количество пространственных измерений для операции свертки. Пространственные измерения — это нижние измерения фильтра свертки. Это значение также определяет размер массивов 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
.
Ограничения тензоров
- FilterZeroPointTensor и InputZeroPointTensor должны иметь один и тот же DimensionCount.
- FilterTensor, InputTensor и OutputTensor должны иметь одинаковые значения DimensionCount.
- InputTensor и InputZeroPointTensor должны иметь один и тот же тип DataType.
- FilterTensor и FilterZeroPointTensor должны иметь один и тот же тип DataType.
Поддержка тензоров
DML_FEATURE_LEVEL_4_0 и выше
Тензор | Kind | Измерения | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|---|
InputTensor | Входные данные | { BatchCount, InputChannelCount, [InputHeight], InputWidth } | от 3 до 4 | INT8, UINT8 |
InputZeroPointTensor | Необязательные входные данные | { [1], [1], [1], 1 } | от 1 до 4 | INT8, UINT8 |
FilterTensor | Входные данные | { FilterBatchCount, FilterChannelCount, [FilterHeight], FilterWidth } | от 3 до 4 | INT8, UINT8 |
FilterZeroPointTensor | Необязательные входные данные | { [1], FilterZeroPointChannelCount, [1], [1] } | от 1 до 4 | INT8, UINT8 |
OutputTensor | Выходные данные | { BatchCount, OutputChannelCount, [OutputHeight], OutputWidth } | от 3 до 4 | INT32 |
DML_FEATURE_LEVEL_2_1 и выше
Тензор | Kind | Измерения | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|---|
InputTensor | Входные данные | { BatchCount, InputChannelCount, InputHeight, InputWidth } | 4 | INT8, UINT8 |
InputZeroPointTensor | Необязательные входные данные | { 1, 1, 1, 1 } | 4 | INT8, UINT8 |
FilterTensor | Входные данные | { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth } | 4 | INT8, UINT8 |
FilterZeroPointTensor | Необязательные входные данные | { 1, FilterZeroPointChannelCount, 1, 1 } | 4 | INT8, UINT8 |
OutputTensor | Выходные данные | { BatchCount, OutputChannelCount, OutputHeight, OutputWidth } | 4 | INT32 |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | сборка Windows 10 20348 |
Минимальная версия сервера | сборка Windows 10 20348 |
Верхняя часть | directml.h |