Compartilhar via


estrutura DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC (directml.h)

Calcula gradientes de backpropagation para treinamento de normalização em lote.

Esse operador executa várias computações, que são detalhadas nas descrições de saída separadas.

Qualquer dimensão em MeanTensor, VarianceTensor e ScaleTensor pode ser definida como 1 e ser transmitida automaticamente para corresponder a InputTensor, mas, caso contrário, deve ser igual ao tamanho da dimensão correspondente de InputTensor.

OutputScaleGradientTensor e OutputBiasGradientTensor são computados usando somas no conjunto de dimensões para as quais MeanTensor, ScaleTensor e VarianceTensor são tamanhos iguais a um.

Sintaxe

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;
};

Membros

InputTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados de entrada. Normalmente, esse é o mesmo tensor que foi fornecido como InputTensor para DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC no passe para frente.

InputGradientTensor

Tipo: const DML_TENSOR_DESC*

O tensor de gradiente de entrada. Normalmente, isso é obtido da saída de backpropagation de uma camada anterior.

MeanTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados médios. Normalmente, esse é o mesmo tensor que foi retornado por MeanTensor de DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC no passe para frente.

VarianceTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados de variação. Normalmente, esse é o mesmo tensor que foi retornado como OutputVarianceTensor de DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC no passe para frente.

ScaleTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados de escala.

OutputGradientTensor

Tipo: const DML_TENSOR_DESC*

Para cada valor correspondente nas 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*

A computação a seguir é feita ou todos os valores correspondentes nas entradas: OutputScaleGradient = sum(InputGradient * (Input - Mean) / sqrt(Variance + Epsilon))

OutputBiasGradientTensor

Tipo: const DML_TENSOR_DESC*

A computação a seguir é feita ou todos os valores correspondentes nas entradas: OutputBiasGradient = sum(InputGradient)

Epsilon

Tipo: FLOAT

Um valor float pequeno adicionado à variação para evitar zero.

Comentários

Disponibilidade

Esse operador foi introduzido em DML_FEATURE_LEVEL_4_1.

Restrições do Tensor

  • InputGradientTensor, InputTensor, MeanTensor, OutputBiasGradientTensor, OutputGradientTensor, OutputScaleGradientTensor, ScaleTensor e VarianceTensor devem ter os mesmos DataType e DimensionCount.
  • MeanTensor, OutputBiasGradientTensor, OutputScaleGradientTensor, ScaleTensor e VarianceTensor devem ter os mesmos Tamanhos.
  • InputGradientTensor, InputTensor e OutputGradientTensor devem ter os mesmos Tamanhos.

Suporte ao Tensor

DML_FEATURE_LEVEL_4_1 e superior

Tensor Tipo Dimensões Contagens de dimensões com suporte Tipos de dados com suporte
InputTensor Entrada { InputDimensions[] } 1 a 8 FLOAT32, FLOAT16
InputGradientTensor Entrada { InputDimensions[] } 1 a 8 FLOAT32, FLOAT16
MeanTensor Entrada { MeanDimensions[] } 1 a 8 FLOAT32, FLOAT16
VarianceTensor Entrada { MeanDimensions[] } 1 a 8 FLOAT32, FLOAT16
ScaleTensor Entrada { MeanDimensions[] } 1 a 8 FLOAT32, FLOAT16
OutputGradientTensor Saída { InputDimensions[] } 1 a 8 FLOAT32, FLOAT16
OutputScaleGradientTensor Saída { MeanDimensions[] } 1 a 8 FLOAT32, FLOAT16
OutputBiasGradientTensor Saída { MeanDimensions[] } 1 a 8 FLOAT32, FLOAT16

Requisitos

   
Cabeçalho directml.h