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


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

См. также раздел