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


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

Вычисляет градиенты обратного распространения для среза (см . DML_SLICE1_OPERATOR_DESC).

Напомним, что DML_SLICE1_OPERATOR_DESC извлекает подобласть входного тензора. Учитывая inputGradientTensor с теми же размерами, что и выходные данные эквивалентного DML_SLICE1_OPERATOR_DESC, этот оператор создает OutputGradientTensor с теми же размерами, что и входныеданные DML_SLICE1_OPERATOR_DESC. Срезанные элементы распространяются на выходные данные, а все остальные элементы имеют значение 0.

В качестве примера рассмотрим DML_SLICE1_OPERATOR_DESC , которая извлекает следующие элементы из тензора:

InputTensor            OutputTensor
[[a, b, c, d],
 [e, f, g, h],   Slice   [[a, c],
 [i, j, k, l],    -->     [i, k]]
 [m, n, o, p]]

Если заданы те же шаги InputWindowOffsets/Sizes/, что и в приведенном выше примере, этот оператор затем выполнит следующее преобразование.

InputGradientTensor       OutputGradientTensor
                             [[a, 0, c, 0],
      [[a, c],   SliceGrad    [0, 0, 0, 0],
       [i, k]]      -->       [i, 0, k, 0],
                              [0, 0, 0, 0]]

Синтаксис

struct DML_SLICE_GRAD_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputGradientTensor;
  const DML_TENSOR_DESC *OutputGradientTensor;
  UINT                  DimensionCount;
  const UINT            *InputWindowOffsets;
  const UINT            *InputWindowSizes;
  const INT             *InputWindowStrides;
};

Члены

InputGradientTensor

Тип: const DML_TENSOR_DESC*

Тензор входящего градиента. Обычно это получается из выходных данных обратного распространения предыдущего слоя. Как правило, этот тензор имеет те же размеры, что и выходные данные соответствующего DML_SLICE1_OPERATOR_DESC в проходе вперед.

OutputGradientTensor

Тип: const DML_TENSOR_DESC*

Выходной тензор, содержащий обратные градиенты. Как правило, этот тензор имеет те же размеры, что и входные данные соответствующего DML_SLICE1_OPERATOR_DESC на переднем проходе.

DimensionCount

Тип: UINT

Количество элементов в массивах InputWindowOffsets, InputWindowSizes и InputWindowStrides . Это значение должно быть равно DimensionCount , указанному в InputGradientTensor и OutputGradientTensor.

InputWindowOffsets

Тип: _Field_size_(DimensionCount) const UINT*

См . раздел InputWindowOffsets в DML_SLICE1_OPERATOR_DESC.

InputWindowSizes

Тип: _Field_size_(DimensionCount) const UINT*

См . раздел InputWindowSizes в DML_SLICE1_OPERATOR_DESC.

InputWindowStrides

Тип: _Field_size_(DimensionCount) const UINT*

См. раздел InputWindowStrides в DML_SLICE1_OPERATOR_DESC.

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

Доступность

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

Ограничения тензоров

InputGradientTensor и OutputGradientTensor должны иметь одинаковые значения DataType и DimensionCount.

Поддержка тензоров

DML_FEATURE_LEVEL_4_1 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputGradientTensor Входные данные От 1 до 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputGradientTensor Выходные данные От 1 до 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_3_1 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputGradientTensor Входные данные От 1 до 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputGradientTensor Выходные данные От 1 до 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_3_0 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputGradientTensor Входные данные От 4 до 5 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputGradientTensor Выходные данные От 4 до 5 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

Требования

Требование Значение
Минимальная версия клиента сборка Windows 10 20348
Минимальная версия сервера сборка Windows 10 20348
Верхняя часть directml.h