다음을 통해 공유


DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC 구조체(directml.h)

일괄 처리 정규화 학습을 위한 백프로포지션 그라데이션을 계산합니다.

이 연산자는 별도의 출력 설명에 자세히 설명된 여러 계산을 수행합니다.

MeanTensor, VarianceTensorScaleTensor의 모든 차원을 1로 설정하고 InputTensor와 일치하도록 자동으로 브로드캐스트할 수 있지만 그렇지 않으면 InputTensor에서 해당 차원의 크기와 같아야 합니다.

OutputScaleGradientTensorOutputBiasGradientTensorMeanTensor, ScaleTensorVarianceTensor 크기가 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, ScaleTensorVarianceTensor 는 동일한 DataTypeDimensionCount를 가져야 합니다.
  • MeanTensor, OutputBiasGradientTensor, OutputScaleGradientTensor, ScaleTensorVarianceTensor크기는 같아야 합니다.
  • InputGradientTensor, InputTensorOutputGradientTensor크기는 같아야 합니다.

텐서 지원

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