структура DML_CONVOLUTION_OPERATOR_DESC (directml.h)
Выполняет свертывание элемента FilterTensor с inputTensor. Этот оператор поддерживает ряд стандартных конфигураций свертки. Эти стандартные конфигурации включают свертку вперед и назад (транспонированную) путем задания полей Направление и Режим , а также свертку на уровне глубины путем установки поля GroupCount .
Сводка необходимых действий: выполнение свертки в выходном тензоре; изменить смещение до того же размера измерения, что и выходной тензор; Добавьте тензор измененного смещения в выходной тензор.
Синтаксис
struct DML_CONVOLUTION_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *FilterTensor;
const DML_TENSOR_DESC *BiasTensor;
const DML_TENSOR_DESC *OutputTensor;
DML_CONVOLUTION_MODE Mode;
DML_CONVOLUTION_DIRECTION Direction;
UINT DimensionCount;
const UINT *Strides;
const UINT *Dilations;
const UINT *StartPadding;
const UINT *EndPadding;
const UINT *OutputPadding;
UINT GroupCount;
const DML_OPERATOR_DESC *FusedActivation;
};
Члены
InputTensor
Тип: const DML_TENSOR_DESC*
Тензор, содержащий входные данные. Ожидаемые размеры InputTensor :
{ BatchCount, InputChannelCount, InputWidth }
для 3D,{ BatchCount, InputChannelCount, InputHeight, InputWidth }
для 4D и{ BatchCount, InputChannelCount, InputDepth, InputHeight, InputWidth }
для 5D.
FilterTensor
Тип: const DML_TENSOR_DESC*
Тензор, содержащий данные фильтра. Ожидаемые измерения FilterTensor :
{ FilterBatchCount, FilterChannelCount, FilterWidth }
для 3D,{ FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }
для 4D и{ FilterBatchCount, FilterChannelCount, FilterDepth, FilterHeight, FilterWidth }
для 5D.
BiasTensor
Тип: _Maybenull_ const DML_TENSOR_DESC*
Необязательный тензор, содержащий данные смещения. Тензор смещения — это тензор, содержащий данные, которые передаются через выходной тензор в конце свертки, которая добавляется к результату. Ожидаемые размеры BiasTensor :
{ 1, OutputChannelCount, 1 }
для 3D,{ 1, OutputChannelCount, 1, 1 }
для 4D и{ 1, OutputChannelCount, 1, 1, 1 }
для 5D.
Для каждого выходного канала одно значение смещения для этого канала добавляется к каждому элементу в этом канале OutputTensor. То есть BiasTensor передается в размер OutputTensor, а оператор возвращает суммирование этого переданного объекта BiasTensor с результатом свертки.
OutputTensor
Тип: const DML_TENSOR_DESC*
Тензор для записи результатов. Ожидаемые размеры OutputTensor :
{ BatchCount, OutputChannelCount, OutputWidth }
для 3D,{ BatchCount, OutputChannelCount, OutputHeight, OutputWidth }
для 4D и{ BatchCount, OutputChannelCount, OutputDepth, OutputHeight, OutputWidth }
для 5D.
Mode
Тип: DML_CONVOLUTION_MODE
Режим, используемый для операции свертки. DML_CONVOLUTION_MODE_CROSS_CORRELATION — это поведение, необходимое для типичных сценариев вывода. Напротив, DML_CONVOLUTION_MODE_CONVOLUTION переворачивает порядок элементов в каждом ядре фильтра по каждому пространственному измерению.
Direction
Тип: DML_CONVOLUTION_DIRECTION
Направление операции свертки. DML_CONVOLUTION_DIRECTION_FORWARD является основной формой свертки, используемой для вывода, где сочетание DML_CONVOLUTION_DIRECTION_FORWARD и DML_CONVOLUTION_DIRECTION_BACKWARD используется во время обучения.
DimensionCount
Тип: UINT
Количество пространственных измерений для операции свертки. Пространственные измерения — это нижние измерения фильтра свертки. Например, размеры ширины и высоты являются пространственными измерениями тензора фильтра сверток 4D. Это значение также определяет размер массивов Strides, Dilations, StartPadding, EndPadding и OutputPadding . Ему следует задать значение 2, если inputTensor.DimensionCount равно 4, и 3, если inputTensor.DimensionCount равно 5.
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*
Массив, содержащий значения заполнения, применяемые к концу каждого пространственного измерения фильтра и входного тензора операции свертки. Значения концевого заполнения интерпретируются в соответствии с полем Направление .
OutputPadding
Тип: _Field_size_(DimensionCount) const UINT*
Массив, содержащий заполнение выходных данных для операции свертки. OutputPadding применяет нулевое заполнение к результату свертки. Это заполнение применяется к концу каждого пространственного измерения выходного тензора.
GroupCount
Тип: UINT
Количество групп, на которые делится операция свертки. Это можно использовать для достижения сверток на уровне глубины, установив параметр GroupCount равным количеству входных каналов, а для параметра Direction — значение DML_CONVOLUTION_DIRECTION_FORWARD. При этом свертка делится на отдельный сверток для каждого входного канала.
FusedActivation
Тип: _Maybenull_ const DML_OPERATOR_DESC*
Необязательный слой слитой активации, применяемый после свертки. Дополнительные сведения см. в разделе Использование слитых операторов для повышения производительности.
Режим взаимодействия
Режим свертки | Направление свертки | Ориентация фильтра |
---|---|---|
DML_CONVOLUTION_MODE_CROSS_CORRELATION | DML_CONVOLUTION_DIRECTION_FORWARD | Фильтр имеет ориентацию удостоверения |
DML_CONVOLUTION_MODE_CROSS_CORRELATION | DML_CONVOLUTION_DIRECTION_BACKWARD | фильтр транспонируется по осям x,y |
DML_CONVOLUTION_MODE_CONVOLUTION | DML_CONVOLUTION_DIRECTION_FORWARD | фильтр транспонируется по осям x,y |
DML_CONVOLUTION_MODE_CONVOLUTION | DML_CONVOLUTION_DIRECTION_BACKWARD | Фильтр имеет ориентацию удостоверения |
Доступность
Этот оператор появился в DML_FEATURE_LEVEL_1_0
.
Ограничения тензоров
BiasTensor, FilterTensor, InputTensor и OutputTensor должны иметь одинаковые значения DataType и DimensionCount.
Поддержка тензоров
DML_FEATURE_LEVEL_4_0 и выше
Тензор | Kind | Измерения | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|---|
InputTensor | Входные данные | { BatchCount, InputChannelCount, [InputDepth], [InputHeight], InputWidth } | от 3 до 5 | FLOAT32, FLOAT16 |
FilterTensor | Входные данные | { FilterBatchCount, FilterChannelCount, [FilterDepth], [FilterHeight], FilterWidth } | от 3 до 5 | FLOAT32, FLOAT16 |
BiasTensor | Необязательные входные данные | { 1, OutputChannelCount, [1], [1], 1 } | от 3 до 5 | FLOAT32, FLOAT16 |
OutputTensor | Выходные данные | { BatchCount, OutputChannelCount, [OutputDepth], [OutputHeight], OutputWidth } | от 3 до 5 | FLOAT32, FLOAT16 |
DML_FEATURE_LEVEL_1_0 и выше
Тензор | Kind | Измерения | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|---|
InputTensor | Входные данные | { BatchCount, InputChannelCount, [InputDepth], InputHeight, InputWidth } | от 4 до 5 | FLOAT32, FLOAT16 |
FilterTensor | Входные данные | { FilterBatchCount, FilterChannelCount, [FilterDepth], FilterHeight, FilterWidth } | от 4 до 5 | FLOAT32, FLOAT16 |
BiasTensor | Необязательные входные данные | { 1, OutputChannelCount, [1], 1, 1 } | от 4 до 5 | FLOAT32, FLOAT16 |
OutputTensor | Выходные данные | { BatchCount, OutputChannelCount, [OutputDepth], OutputHeight, OutputWidth } | от 4 до 5 | FLOAT32, FLOAT16 |
Требования
Требование | Значение |
---|---|
Заголовок | directml.h |