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