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 |