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


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

Вычисляет градиенты обратного распространения для пакетной нормализации. DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC выполняет несколько вычислений, которые подробно описаны в отдельных описаниях выходных данных.

OutputScaleGradientTensor и OutputBiasGradientTensor вычисляются на основе сумм в наборе измерений, для которых размеры MeanTensor, ScaleTensor и VarianceTensor равны единице.

Синтаксис

struct DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *InputGradientTensor;
  const DML_TENSOR_DESC *MeanTensor;
  const DML_TENSOR_DESC *VarianceTensor;
  const DML_TENSOR_DESC *ScaleTensor;
  const DML_TENSOR_DESC *OutputGradientTensor;
  const DML_TENSOR_DESC *OutputScaleGradientTensor;
  const DML_TENSOR_DESC *OutputBiasGradientTensor;
  FLOAT                 Epsilon;
};

Члены

InputTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий входные данные. Обычно это тот же тензор, который был предоставлен в качестве inputTensor для DML_BATCH_NORMALIZATION_OPERATOR_DESC в переадресации.

InputGradientTensor

Тип: const DML_TENSOR_DESC*

Тензор входящего градиента. Обычно это получается из выходных данных обратного распространения предыдущего слоя.

MeanTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий средние данные. Обычно это тот же тензор, который был предоставлен в качестве meanTensor для DML_BATCH_NORMALIZATION_OPERATOR_DESC на переднем проходе.

VarianceTensor

Тип: const DML_TENSOR_DESC*

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

ScaleTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий данные масштабирования. Обычно это тот же тензор, который был предоставлен в качестве scaleTensor для DML_BATCH_NORMALIZATION_OPERATOR_DESC на переднем проходе.

OutputGradientTensor

Тип: const DML_TENSOR_DESC*

Для каждого соответствующего значения во входных данных — OutputGradient = InputGradient * (Scale / sqrt(Variance + Epsilon)).

OutputScaleGradientTensor

Тип: const DML_TENSOR_DESC*

Выполняется следующее вычисление или каждое соответствующее значение во входных данных.

OutputScaleGradient = sum(InputGradient * (Input - Mean) / sqrt(Variance + Epsilon))

OutputBiasGradientTensor

Тип: const DML_TENSOR_DESC*

Выполняется следующее вычисление или каждое соответствующее значение во входных данных.

OutputBiasGradient = sum(InputGradient)

Epsilon

Тип: FLOAT

Небольшое значение, добавленное к дисперсии, чтобы избежать нуля.

Комментарии

Доступность

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

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

  • InputGradientTensor, InputTensor, MeanTensor, OutputBiasGradientTensor, OutputGradientTensor, OutputScaleGradientTensor, ScaleTensor и VarianceTensor должны иметь одинаковые значения DataType и DimensionCount.
  • MeanTensor, OutputBiasGradientTensor, OutputScaleGradientTensor, ScaleTensor и VarianceTensor должны иметь одинаковые размеры.
  • InputGradientTensor, InputTensor и OutputGradientTensor должны иметь одинаковые размеры.

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

Тензор Kind Измерения Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные { InputDimensions[] } От 1 до 8 FLOAT32, FLOAT16
InputGradientTensor Входные данные { InputDimensions[] } От 1 до 8 FLOAT32, FLOAT16
MeanTensor Входные данные { MeanDimensions[] } От 1 до 8 FLOAT32, FLOAT16
VarianceTensor Входные данные { MeanDimensions[] } От 1 до 8 FLOAT32, FLOAT16
ScaleTensor Входные данные { MeanDimensions[] } От 1 до 8 FLOAT32, FLOAT16
OutputGradientTensor Выходные данные { InputDimensions[] } От 1 до 8 FLOAT32, FLOAT16
OutputScaleGradientTensor Выходные данные { MeanDimensions[] } От 1 до 8 FLOAT32, FLOAT16
OutputBiasGradientTensor Выходные данные { MeanDimensions[] } От 1 до 8 FLOAT32, FLOAT16

Требования

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