DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC struttura (directml.h)
Calcola le sfumature backpropagation per il training di normalizzazione batch.
Questo operatore esegue più calcoli, dettagliati nelle descrizioni di output separate.
Qualsiasi dimensione in MeanTensor, VarianceTensor e ScaleTensor può essere impostata su 1 e essere trasmessi automaticamente in corrispondenza di InputTensor, ma in caso contrario, deve essere uguale alle dimensioni della dimensione corrispondente da InputTensor.
OutputScaleGradientTensor e OutputBiasGradientTensor vengono calcolati usando somme nel set di dimensioni per cui MeanTensor, ScaleTensor e VarianceTensor sizesor sono uguali a uno.
Sintassi
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;
};
Members
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensor contenente i dati di input. Questo è in genere lo stesso tensore fornito come InputTensor per DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC nel passaggio avanti.
InputGradientTensor
Tipo: const DML_TENSOR_DESC*
Tensore sfumatura in ingresso. Questo viene in genere ottenuto dall'output di backpropagation di un livello precedente.
MeanTensor
Tipo: const DML_TENSOR_DESC*
Tensor contenente i dati medi. Questo è in genere lo stesso tensore restituito da MeanTensor da DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC nel passaggio avanti.
VarianceTensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente i dati di varianza. Questo è in genere lo stesso tensore restituito come OutputVarianceTensor da DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC nel passaggio avanti.
ScaleTensor
Tipo: const DML_TENSOR_DESC*
Tensor contenente i dati di scala.
OutputGradientTensor
Tipo: const DML_TENSOR_DESC*
Per ogni valore corrispondente negli input:
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*
Il calcolo seguente viene eseguito o ogni valore corrispondente negli input: OutputScaleGradient = sum(InputGradient * (Input - Mean) / sqrt(Variance + Epsilon))
OutputBiasGradientTensor
Tipo: const DML_TENSOR_DESC*
Il calcolo seguente viene eseguito o ogni valore corrispondente negli input: OutputBiasGradient = sum(InputGradient)
Epsilon
Tipo: FLOAT
Valore float ridotto aggiunto alla varianza per evitare zero.
Commenti
Disponibilità
Questo operatore è stato introdotto in DML_FEATURE_LEVEL_4_1
.
Vincoli tensor
- InputGradientTensor, InputTensor, MeanTensor, OutputBiasGradientTensor, OutputGradientTensor, OutputScaleGradientTensor, ScaleTensor e VarianceTensor deve avere lo stesso DataType e DimensionCount.
- MeanTensor, OutputBiasGradientTensor, OutputScaleGradientTensor, ScaleTensor e VarianceTensor devono avere le stesse dimensioni.
- InputGradientTensor, InputTensor e OutputGradientTensor devono avere le stesse dimensioni.
Supporto di Tensor
DML_FEATURE_LEVEL_4_1 e versioni successive
Tensore | Tipo | Dimensioni | Conteggi delle dimensioni supportate | Tipi di dati supportati |
---|---|---|---|---|
InputTensor | Input | { InputDimensions[] } | da 1 a 8 | FLOAT32, FLOAT16 |
InputGradientTensor | Input | { InputDimensions[] } | da 1 a 8 | FLOAT32, FLOAT16 |
MeanTensor | Input | { MeanDimensions[] } | da 1 a 8 | FLOAT32, FLOAT16 |
VarianceTensor | Input | { MeanDimensions[] } | da 1 a 8 | FLOAT32, FLOAT16 |
ScaleTensor | Input | { MeanDimensions[] } | da 1 a 8 | FLOAT32, FLOAT16 |
OutputGradientTensor | Output | { InputDimensions[] } | da 1 a 8 | FLOAT32, FLOAT16 |
OutputScaleGradientTensor | Output | { MeanDimensions[] } | da 1 a 8 | FLOAT32, FLOAT16 |
OutputBiasGradientTensor | Output | { MeanDimensions[] } | da 1 a 8 | FLOAT32, FLOAT16 |
Requisiti
Intestazione | directml.h |