структура DML_MAX_POOLING_GRAD_OPERATOR_DESC (directml.h)
Вычисляет градиенты обратного распространения для максимального пула (см . DML_MAX_POOLING2_OPERATOR_DESC).
Рассмотрим 2x2 DML_MAX_POOLING2_OPERATOR_DESC без заполнения и расширения и шаг 1, который выполняет следующие действия.
InputTensor OutputTensor IndicesTensor
[[1, 2, 3], MaxPool [[4, 4], [[4, 4],
[2, 4, 2], --> [6, 7]] [7, 8]]
[5, 6, 7]]
Самый большой элемент каждого окна 2x2 во входном тензоре создает один элемент выходных данных. Ниже приведен пример выходных данных DML_MAX_POOLING_GRAD_OPERATOR_DESC с учетом аналогичных параметров.
InputTensor InputGradientTensor OutputGradientTensor
[[1, 2, 3], [[1, 2], MaxPoolGrad [[0, 0, 0],
[2, 4, 2], [4, 5]] --> [0, 3, 0],
[5, 6, 7]] [0, 4, 5]]
Фактически этот оператор использует InputTensor для определения индекса самого большого элемента из каждого окна и распределяет значения InputGradientTensor в OutputGradientTensor на основе этих индексов. Если индексы перекрываются, значения суммируются. Все выходные элементы без ссылок обнуляются.
В случае привязки (когда более одного элемента в окне имеют одинаковое максимальное значение) выбирается элемент с наименьшим логическим индексом.
Синтаксис
struct DML_MAX_POOLING_GRAD_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *InputGradientTensor;
const DML_TENSOR_DESC *OutputGradientTensor;
UINT DimensionCount;
const UINT *Strides;
const UINT *WindowSize;
const UINT *StartPadding;
const UINT *EndPadding;
const UINT *Dilations;
};
Члены
InputTensor
Тип: const DML_TENSOR_DESC*
Тензор входной функции. Обычно это тот же тензор, который был предоставлен в качестве inputtensor для DML_MAX_POOLING2_OPERATOR_DESC в переадресации.
InputGradientTensor
Тип: const DML_TENSOR_DESC*
Тензор входящего градиента. Обычно это получается из выходных данных обратного распространения предыдущего слоя. Обычно этот тензор имеет те же размеры, что и выходные данные соответствующего DML_MAX_POOLING2_OPERATOR_DESC на переднем проходе.
OutputGradientTensor
Тип: const DML_TENSOR_DESC*
Выходной тензор, содержащий обратные градиенты. Обычно этот тензор имеет те же размеры, что и входные данные соответствующего DML_MAX_POOLING2_OPERATOR_DESC на переднем проходе.
DimensionCount
Тип: UINT
Количество элементов в массивах Strides, WindowSize, StartPadding, EndPadding и Dilations . Это значение должно равняться количеству пространственных измерений (InputTensor's DimensionCount - 2). Так как этот оператор поддерживает только 4D-тензоры, единственным допустимым значением для этого параметра является 2.
Strides
Тип: _Field_size_(DimensionCount) const UINT*
См. раздел Шаги в DML_MAX_POOLING2_OPERATOR_DESC.
WindowSize
Тип: _Field_size_(DimensionCount) const UINT*
См . раздел WindowSize в DML_MAX_POOLING2_OPERATOR_DESC.
StartPadding
Тип: _Field_size_(DimensionCount) const UINT*
См. раздел StartPadding в DML_MAX_POOLING2_OPERATOR_DESC.
EndPadding
Тип: _Field_size_(DimensionCount) const UINT*
См . раздел EndPadding в DML_MAX_POOLING2_OPERATOR_DESC.
Dilations
Тип: _Field_size_(DimensionCount) const UINT*
См. раздел Dilations in DML_MAX_POOLING2_OPERATOR_DESC.
Доступность
Этот оператор появился в DML_FEATURE_LEVEL_3_0
.
Ограничения тензоров
- InputGradientTensor, InputTensor и OutputGradientTensor должны иметь одинаковые значения DataType и DimensionCount.
- InputTensor и OutputGradientTensor должны иметь одинаковые размеры.
Поддержка тензоров
DML_FEATURE_LEVEL_4_0 и выше
Тензор | Kind | Измерения | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|---|
InputTensor | Входные данные | { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } | От 4 до 5 | FLOAT32, FLOAT16 |
InputGradientTensor | Входные данные | { BatchCount, ChannelCount, [OutputDepth], OutputHeight, OutputWidth } | От 4 до 5 | FLOAT32, FLOAT16 |
OutputGradientTensor | Выходные данные | { BatchCount, ChannelCount, [InputDepth], InputHeight, InputWidth } | От 4 до 5 | FLOAT32, FLOAT16 |
DML_FEATURE_LEVEL_3_0 и выше
Тензор | Kind | Измерения | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|---|
InputTensor | Входные данные | { BatchCount, ChannelCount, InputHeight, InputWidth } | 4 | FLOAT32, FLOAT16 |
InputGradientTensor | Входные данные | { BatchCount, ChannelCount, OutputHeight, OutputWidth } | 4 | FLOAT32, FLOAT16 |
OutputGradientTensor | Выходные данные | { BatchCount, ChannelCount, InputHeight, InputWidth } | 4 | FLOAT32, FLOAT16 |
Требования
Минимальная версия клиента | Сборка Windows 10 20348 |
Минимальная версия сервера | Сборка Windows 10 20348 |
Верхняя часть | directml.h |