estructura DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC (directml.h)
Calcula los degradados de la propiedad inversa para el entrenamiento de normalización por lotes.
Este operador realiza varios cálculos, que se detallan en las descripciones de salida independientes.
Cualquier dimensión de MeanTensor, VarianceTensor y ScaleTensor se puede establecer en 1 y se puede difundir automáticamente para que coincida con InputTensor, pero de lo contrario debe ser igual al tamaño de la dimensión correspondiente de InputTensor.
OutputScaleGradientTensor y OutputBiasGradientTensor se calculan mediante sumas en el conjunto de dimensiones para las que los tamaños MeanTensor, ScaleTensor y VarianceTensor son iguales a uno.
Sintaxis
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;
};
Miembros
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensor que contiene los datos de entrada. Normalmente, este es el mismo tensor que se proporcionó como InputTensor para DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC en el pase hacia delante.
InputGradientTensor
Tipo: const DML_TENSOR_DESC*
Tensor de degradado entrante. Esto se obtiene normalmente a partir de la salida de la propiedad backpropagation de una capa anterior.
MeanTensor
Tipo: const DML_TENSOR_DESC*
Tensor que contiene los datos medio. Normalmente, este es el mismo tensor devuelto por MeanTensor de DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC en el pase hacia delante.
VarianceTensor
Tipo: const DML_TENSOR_DESC*
Tensor que contiene los datos de varianza. Normalmente, este es el mismo tensor que se devolvió como OutputVarianceTensor de DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC en el pase hacia delante.
ScaleTensor
Tipo: const DML_TENSOR_DESC*
Tensor que contiene los datos de escala.
OutputGradientTensor
Tipo: const DML_TENSOR_DESC*
Para cada valor correspondiente de las entradas:
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
Tipo: const DML_TENSOR_DESC*
El siguiente cálculo se realiza o cada valor correspondiente en las entradas: OutputScaleGradient = sum(InputGradient * (Input - Mean) / sqrt(Variance + Epsilon))
OutputBiasGradientTensor
Tipo: const DML_TENSOR_DESC*
El siguiente cálculo se realiza o cada valor correspondiente en las entradas: OutputBiasGradient = sum(InputGradient)
Epsilon
Tipo: FLOAT
Valor flotante pequeño agregado a la varianza para evitar cero.
Observaciones
Disponibilidad
Este operador se introdujo en DML_FEATURE_LEVEL_4_1
.
Restricciones tensor
- InputGradientTensor, InputTensor, MeanTensor, OutputBiasGradientTensor, OutputGradientTensor, OutputScaleGradientTensor, ScaleTensor y VarianceTensor deben tener el mismo DataType y DimensionCount.
- MeanTensor, OutputBiasGradientTensor, OutputScaleGradientTensor, ScaleTensor y VarianceTensor deben tener los mismos tamaños.
- InputGradientTensor, InputTensor y OutputGradientTensor deben tener los mismos tamaños.
Compatibilidad con Tensor
DML_FEATURE_LEVEL_4_1 y versiones posteriores
Tensor | Kind | Dimensions | Recuentos de dimensiones admitidos | Tipos de datos admitidos |
---|---|---|---|---|
InputTensor | Entrada | { InputDimensions[] } | De 1 a 8 | FLOAT32, FLOAT16 |
InputGradientTensor | Entrada | { InputDimensions[] } | De 1 a 8 | FLOAT32, FLOAT16 |
MeanTensor | Entrada | { MeanDimensions[] } | De 1 a 8 | FLOAT32, FLOAT16 |
VarianceTensor | Entrada | { MeanDimensions[] } | De 1 a 8 | FLOAT32, FLOAT16 |
ScaleTensor | Entrada | { MeanDimensions[] } | De 1 a 8 | FLOAT32, FLOAT16 |
OutputGradientTensor | Output | { InputDimensions[] } | De 1 a 8 | FLOAT32, FLOAT16 |
OutputScaleGradientTensor | Output | { MeanDimensions[] } | De 1 a 8 | FLOAT32, FLOAT16 |
OutputBiasGradientTensor | Output | { MeanDimensions[] } | De 1 a 8 | FLOAT32, FLOAT16 |
Requisitos
Encabezado | directml.h |