структура DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC (directml.h)
Выполняет функцию нормализации средней дисперсии для входного тензора. Этот оператор вычисляет среднее и дисперсию входного тензора для выполнения нормализации. Этот оператор выполняет следующие вычисления.
Output = FusedActivation(Scale * ((Input - Mean) / sqrt(Variance + Epsilon)) + Bias).
Синтаксис
struct DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *ScaleTensor;
const DML_TENSOR_DESC *BiasTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT AxisCount;
const UINT *Axes;
BOOL NormalizeVariance;
FLOAT Epsilon;
const DML_OPERATOR_DESC *FusedActivation;
};
Члены
InputTensor
Тип: const DML_TENSOR_DESC*
Тензор, содержащий входные данные. Измерения этого тензора должны иметь значение { BatchCount, ChannelCount, Height, Width }
.
ScaleTensor
Тип: _Maybenull_ const DML_TENSOR_DESC*
Необязательный тензор, содержащий данные масштабирования.
Если DML_FEATURE_LEVEL меньше DML_FEATURE_LEVEL_4_0, то размеры этого тензора должны быть { ScaleBatchCount, ChannelCount, ScaleHeight, ScaleWidth }
. Измерения ScaleBatchCount, ScaleHeight и ScaleWidth должны либо совпадать с InputTensor, либо иметь значение 1, чтобы автоматически транслировать эти измерения через входные данные.
Если DML_FEATURE_LEVEL больше или равно DML_FEATURE_LEVEL_4_0, то для любого измерения можно задать значение 1 и автоматически транслироваться в соответствии с InputTensor.
Если 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*
Необязательный тензор, содержащий данные смещения.
Если DML_FEATURE_LEVEL меньше DML_FEATURE_LEVEL_4_0, то размеры этого тензора должны быть { BiasBatchCount, ChannelCount, BiasHeight, BiasWidth }
. Измерения BiasBatchCount, BiasHeight и BiasWidth должны либо совпадать с InputTensor, либо иметь значение 1, чтобы автоматически транслировать эти измерения по входным данным.
Если DML_FEATURE_LEVEL больше или равно DML_FEATURE_LEVEL_4_0, то для любого измерения можно задать значение 1 и автоматически транслироваться в соответствии с InputTensor.
Если 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 }
AxisCount
Тип: UINT
Количество осей. Это поле определяет размер массива осей .
Axes
Тип: _Field_size_(AxisCount) const UINT*
Оси, вдоль которых вычисляется среднее и дисперсию.
NormalizeVariance
Тип: BOOL
Значение TRUE , если уровень нормализации включает дисперсию в вычислении нормализации. В противном случае — FALSE. Если значение РАВНО FALSE, то уравнение нормализации имеет значение Output = FusedActivation(Scale * (Input - Mean) + Bias)
.
Epsilon
Тип: FLOAT
Значение epsilon, используемое для предотвращения деления на ноль. По умолчанию рекомендуется использовать значение 0,00001.
FusedActivation
Тип: _Maybenull_ const DML_OPERATOR_DESC*
Необязательный слой плавленной активации, применяемый после нормализации.
Комментарии
DML_MEAN_VARIANCE_NORMALIZATION1_OPERATOR_DESC — это надмножество функций DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC. В этом случае установка массива { 2, 3 }
Осей в значение эквивалентна значению FALSE в параметреCrossChannel в DML_MEAN_VARIANCE_NORMALIZATION_OPERATOR_DESC. В то время как установка массива осей в значение эквивалентна параметру { 1, 2, 3 }
CrossChannel значения TRUE.
Доступность
Этот оператор появился в DML_FEATURE_LEVEL_2_1
.
Ограничения тензоров
BiasTensor, InputTensor, OutputTensor и ScaleTensor должны иметь одинаковые значения DataType и DimensionCount.
Поддержка тензоров
DML_FEATURE_LEVEL_3_1 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
InputTensor | Входные данные | От 1 до 8 | FLOAT32, FLOAT16 |
ScaleTensor | Необязательные входные данные | От 1 до 8 | FLOAT32, FLOAT16 |
BiasTensor | Необязательные входные данные | От 1 до 8 | FLOAT32, FLOAT16 |
OutputTensor | Выходные данные | От 1 до 8 | FLOAT32, FLOAT16 |
DML_FEATURE_LEVEL_2_1 и выше
Тензор | Kind | Поддерживаемые счетчики измерений | Поддерживаемые типы данных |
---|---|---|---|
InputTensor | Входные данные | 4 | FLOAT32, FLOAT16 |
ScaleTensor | Необязательные входные данные | 4 | FLOAT32, FLOAT16 |
BiasTensor | Необязательные входные данные | 4 | FLOAT32, FLOAT16 |
OutputTensor | Выходные данные | 4 | FLOAT32, FLOAT16 |
Требования
Минимальная версия клиента | сборка Windows 10 20348 |
Минимальная версия сервера | сборка Windows 10 20348 |
Верхняя часть | directml.h |
См. также раздел
Использование плавленных операторов для повышения производительности