DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC 구조체(directml.h)
일괄 처리 정규화 학습을 위한 백프로포지션 그라데이션을 계산합니다.
이 연산자는 별도의 출력 설명에 자세히 설명된 여러 계산을 수행합니다.
MeanTensor, VarianceTensor 및 ScaleTensor의 모든 차원을 1로 설정하고 InputTensor와 일치하도록 자동으로 브로드캐스트할 수 있지만 그렇지 않으면 InputTensor에서 해당 차원의 크기와 같아야 합니다.
OutputScaleGradientTensor 및 OutputBiasGradientTensor는 MeanTensor, ScaleTensor 및 VarianceTensor 크기가 1인 차원 집합의 합계를 사용하여 계산됩니다.
구문
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;
};
멤버
InputTensor
형식: const DML_TENSOR_DESC*
입력 데이터를 포함하는 텐서입니다. 일반적으로 전달 패스에서 DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESCInputTensor로 제공된 것과 동일한 텐서입니다.
InputGradientTensor
형식: const DML_TENSOR_DESC*
들어오는 그라데이션 텐서입니다. 이는 일반적으로 이전 계층의 백프로포지션 출력에서 가져옵니다.
MeanTensor
형식: const DML_TENSOR_DESC*
평균 데이터를 포함하는 텐서입니다. 일반적으로 전달 패스의 DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESCMeanTensor에서 반환한 것과 동일한 텐서입니다.
VarianceTensor
형식: const DML_TENSOR_DESC*
분산 데이터가 포함된 텐서입니다. 일반적으로 전달 패스의 DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESCOutputVarianceTensor로 반환된 것과 동일한 텐서입니다.
ScaleTensor
형식: const DML_TENSOR_DESC*
크기 조정 데이터를 포함하는 텐서입니다.
OutputGradientTensor
형식: const DML_TENSOR_DESC*
입력의 모든 해당 값에 대해 다음을 수행합니다.
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
형식: const DML_TENSOR_DESC*
다음 계산이 수행되거나 입력의 모든 해당 값이 수행됩니다. OutputScaleGradient = sum(InputGradient * (Input - Mean) / sqrt(Variance + Epsilon))
OutputBiasGradientTensor
형식: const DML_TENSOR_DESC*
다음 계산이 수행되거나 입력의 모든 해당 값이 수행됩니다. OutputBiasGradient = sum(InputGradient)
Epsilon
형식: FLOAT
0을 방지하기 위해 분산에 추가된 작은 부동 소수점 값입니다.
설명
가용성
이 연산자는 에서 DML_FEATURE_LEVEL_4_1
도입되었습니다.
텐서 제약 조건
- InputGradientTensor, InputTensor, MeanTensor, OutputBiasGradientTensor, OutputGradientTensor, OutputScaleGradientTensor, ScaleTensor 및 VarianceTensor 는 동일한 DataType 및 DimensionCount를 가져야 합니다.
- MeanTensor, OutputBiasGradientTensor, OutputScaleGradientTensor, ScaleTensor 및 VarianceTensor 의 크기는 같아야 합니다.
- InputGradientTensor, InputTensor 및 OutputGradientTensor 의 크기는 같아야 합니다.
텐서 지원
DML_FEATURE_LEVEL_4_1 이상
텐서 | 종류 | 차원 | 지원되는 차원 수 | 지원되는 데이터 형식 |
---|---|---|---|---|
InputTensor | 입력 | { InputDimensions[] } | 1~8개 | FLOAT32, FLOAT16 |
InputGradientTensor | 입력 | { InputDimensions[] } | 1~8개 | FLOAT32, FLOAT16 |
MeanTensor | 입력 | { MeanDimensions[] } | 1~8개 | FLOAT32, FLOAT16 |
VarianceTensor | 입력 | { MeanDimensions[] } | 1~8개 | FLOAT32, FLOAT16 |
ScaleTensor | 입력 | { MeanDimensions[] } | 1~8개 | FLOAT32, FLOAT16 |
OutputGradientTensor | 출력 | { InputDimensions[] } | 1~8개 | FLOAT32, FLOAT16 |
OutputScaleGradientTensor | 출력 | { MeanDimensions[] } | 1~8개 | FLOAT32, FLOAT16 |
OutputBiasGradientTensor | 출력 | { MeanDimensions[] } | 1~8개 | FLOAT32, FLOAT16 |
요구 사항
머리글 | directml.h |