Compartir a través de


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