共用方式為


DML_BATCH_NORMALIZATION_TRAINING_GRAD_OPERATOR_DESC結構 (directml.h)

計算 批次正規化定型的反向傳播漸層。

此運算子會執行多個計算,這些計算會在個別的輸出描述中詳述。

MeanTensorVarianceTensorScaleTensor中的任何維度都可以設定為 1,並自動廣播以符合InputTensor,但否則必須等於來自 InputTensor的對應維度大小。

OutputScaleGradientTensorOutputBiasGradientTensor是使用平均數、ScaleTensorVarianceTensor大小等於一組維度的總和來計算。

語法

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*

包含輸入資料的張量。 這通常與 InputTensor 提供的張量相同,以在轉送中 DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC

InputGradientTensor

類型:const DML_TENSOR_DESC*

傳入漸層張量。 這通常是從前一層反向傳播的輸出取得。

MeanTensor

類型:const DML_TENSOR_DESC*

包含平均資料的張量。 這通常是 MeanTensor 從轉送中 DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC 傳回的相同張量。

VarianceTensor

類型:const DML_TENSOR_DESC*

包含變異數資料的張量。 這通常與向前傳遞中DML_BATCH_NORMALIZATION_TRAINING_OPERATOR_DESC的 OutputVarianceTensor傳回的張量相同。

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

新增至變異數的小型浮點數,以避免零。

備註

可用性

這個運算子是在 中 DML_FEATURE_LEVEL_4_1 引進。

Tensor 條件約束

  • InputGradientTensor、InputTensorMeanTensorOutputBiasGradientTensorOutputGradientTensorOutputScaleGradientTensorScaleTensorVarianceTensor必須具有相同的 DataTypeDimensionCount
  • MeanTensorOutputBiasGradientTensorOutputScaleGradientTensorScaleTensor 和 VarianceTensor必須具有相同的大小
  • InputGradientTensorInputTensorOutputGradientTensor 必須具有相同 的大小

Tensor 支援

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