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