Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 |