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


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

Вычисляет градиенты обратного распространения для обучения пакетной нормализации.

Этот оператор выполняет несколько вычислений, которые подробно описаны в отдельных описаниях выходных данных.

Любое измерение в MeanTensor, VarianceTensor и ScaleTensor может иметь значение 1 и автоматически транслироваться в соответствии с InputTensor, но в противном случае должно быть равно размеру соответствующего измерения из InputTensor.

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

Синтаксис

struct DML_BATCH_NORMALIZATION_TRAINING_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_TRAINING_OPERATOR_DESC в переадресации.

InputGradientTensor

Тип: const DML_TENSOR_DESC*

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

MeanTensor

Тип: const DML_TENSOR_DESC*

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

VarianceTensor

Тип: const DML_TENSOR_DESC*

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

ScaleTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий данные масштабирования.

OutputGradientTensor

Тип: const DML_TENSOR_DESC*

Для каждого соответствующего значения во входных данных:

Coef0 = 1.0f / sqrt(Variance + Epsilon)
Coef1 = InputGradient * (Input - mean(Input))
InputGradientCentered = InputGradient - mean(InputGradient)
InputCentered = InputCentered - mean(InputCentered)
OutputGradient = Scale * Coef0 * (InputGradientCentered - InputCentered * mean(Coef1) / (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_4_1.

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

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

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

DML_FEATURE_LEVEL_4_1 и выше

Тензор 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

Требования

   
Верхняя часть directml.h