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


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

Выполняет функцию нормализации средней дисперсии для входного тензора. Этот оператор вычисляет среднее и дисперсию входного тензора для выполнения нормализации. Этот оператор выполняет следующие вычисления.

Output = FusedActivation(Scale * ((Input - Mean) / sqrt(Variance + Epsilon)) + Bias).

Синтаксис

struct DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC {
  const DML_TENSOR_DESC   *InputTensor;
  const DML_TENSOR_DESC   *ScaleTensor;
  const DML_TENSOR_DESC   *BiasTensor;
  const DML_TENSOR_DESC   *OutputTensor;
  BOOL                    CrossChannel;
  BOOL                    NormalizeVariance;
  FLOAT                   Epsilon;
  const DML_OPERATOR_DESC *FusedActivation;
};

Члены

InputTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий входные данные. Измерения этого тензора должны иметь значение { BatchCount, ChannelCount, Height, Width }.

ScaleTensor

Тип: _Maybenull_ const DML_TENSOR_DESC*

Необязательный тензор, содержащий данные масштабирования. Измерения этого тензора должны иметь значение { BatchCount, ChannelCount, Height, Width }. Любое измерение можно заменить на 1 для трансляции в этом измерении. Если DML_FEATURE_LEVEL меньше DML_FEATURE_LEVEL_5_2, этот тензор требуется, если присутствует BiasTensor . Если DML_FEATURE_LEVEL больше или равно DML_FEATURE_LEVEL_5_2, то этот тензор может иметь значение NULL независимо от значения BiasTensor.

BiasTensor

Тип: _Maybenull_ const DML_TENSOR_DESC*

Необязательный тензор, содержащий данные смещения. Измерения этого тензора должны иметь значение { BatchCount, ChannelCount, Height, Width }. Любое измерение можно заменить на 1 для трансляции в этом измерении. Если DML_FEATURE_LEVEL меньше DML_FEATURE_LEVEL_5_2, то при наличии ScaleTensor этот тензор является обязательным. Если DML_FEATURE_LEVEL больше или равно DML_FEATURE_LEVEL_5_2, то этот тензор может иметь значение NULL независимо от значения ScaleTensor.

OutputTensor

Тип: const DML_TENSOR_DESC*

Тензор для записи результатов. Измерения этого тензора — .{ BatchCount, ChannelCount, Height, Width }

CrossChannel

Тип: BOOL

При значении TRUE слой MeanVariance включает каналы в вычислениях среднего и дисперсии, то есть они нормализуются по осям {ChannelCount, Height, Width}. Если вычисления FALSE, средние и дисперсии нормализуются по осям {Height, Width} , при этом каждый канал является независимым.

NormalizeVariance

Тип: BOOL

Значение TRUE , если уровень нормализации включает дисперсию в вычислении нормализации. В противном случае — FALSE. Если значение РАВНО FALSE, то уравнение нормализации имеет значение Output = FusedActivation(Scale * (Input - Mean) + Bias).

Epsilon

Тип: FLOAT

Значение epsilon, используемое для предотвращения деления на ноль. По умолчанию рекомендуется использовать значение 0,00001.

FusedActivation

Тип: _Maybenull_ const DML_OPERATOR_DESC*

Необязательный слой плавленной активации, применяемый после нормализации. Дополнительные сведения см. в разделе Использование слитых операторов для повышения производительности.

Комментарии

В появилась DML_FEATURE_LEVEL_2_1более новая версия этого оператора, DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC.

Доступность

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

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

  • InputTensor и OutputTensor должны иметь одинаковые размеры.
  • BiasTensor, InputTensor, OutputTensor и ScaleTensor должны иметь один и тот же тип DataType.

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

Тензор Kind Измерения Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные { BatchCount, ChannelCount, Height, Width } 4 FLOAT32, FLOAT16
ScaleTensor Необязательные входные данные { ScaleBatchCount, ScaleChannelCount, ScaleHeight, ScaleWidth } 4 FLOAT32, FLOAT16
BiasTensor Необязательные входные данные { BiasBatchCount, BiasChannelCount, BiasHeight, BiasWidth } 4 FLOAT32, FLOAT16
OutputTensor Выходные данные { BatchCount, ChannelCount, Height, Width } 4 FLOAT32, FLOAT16

Требования

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

См. также раздел