estrutura DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC (directml.h)

Calcula gradientes de backpropagation para normalização em lote. DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC executa várias computações, que são detalhadas nas descrições de saída separadas.

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_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_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 fornecido como MeanTensor para DML_BATCH_NORMALIZATION_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 fornecido como VarianceTensor para DML_OPERATOR_BATCH_NORMALIZATION no passe para frente.

ScaleTensor

Tipo: const DML_TENSOR_DESC*

Um tensor que contém os dados de escala. Normalmente, esse é o mesmo tensor que foi fornecido como ScaleTensor para DML_BATCH_NORMALIZATION_OPERATOR_DESC no passe para frente.

OutputGradientTensor

Tipo: const DML_TENSOR_DESC*

Para cada valor correspondente nas entradas, OutputGradient = InputGradient * (Scale / sqrt(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 pequeno adicionado à variação para evitar zero.

Comentários

Disponibilidade

Esse operador foi introduzido em DML_FEATURE_LEVEL_3_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

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

Requisito Valor
Cliente mínimo com suporte Windows Build 22000
Servidor mínimo com suporte Windows Build 22000
Cabeçalho directml.h