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 |