DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC 構造体 (directml.h)
バッチ正規化のバックプロパティ グラデーションを計算します。 DML_BATCH_NORMALIZATION_GRAD_OPERATOR_DESC は複数の計算を実行します。詳細については、個別の出力の説明を参照してください。
OutputScaleGradientTensor と OutputBiasGradientTensor は、MeanTensor、ScaleTensor、VarianceTensor のサイズが 1 と等しい一連のディメンションの合計を使用して計算されます。
構文
struct DML_BATCH_NORMALIZATION_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_OPERATOR_DESCするために InputTensor として提供されたのと同じテンソルです。
InputGradientTensor
型: const DML_TENSOR_DESC*
入力されるグラデーションテンソル。 これは通常、前のレイヤーのバックプロパティの出力から取得されます。
MeanTensor
型: const DML_TENSOR_DESC*
平均データを含むテンソル。 これは通常、前方パスでDML_BATCH_NORMALIZATION_OPERATOR_DESCする MeanTensor と同じテンソルです。
VarianceTensor
型: const DML_TENSOR_DESC*
分散データを含むテンソル。 これは通常、前方パスでDML_OPERATOR_BATCH_NORMALIZATIONするために VarianceTensor として提供されたテンソルと同じです。
ScaleTensor
型: const DML_TENSOR_DESC*
スケール データを含むテンソル。 これは通常、前方パスでDML_BATCH_NORMALIZATION_OPERATOR_DESCする ScaleTensor と同じテンソルです。
OutputGradientTensor
型: const DML_TENSOR_DESC*
入力内のすべての対応する値に対して、 OutputGradient = InputGradient * (Scale / sqrt(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_3_1
導入されました。
テンソル制約
- InputGradientTensor、 InputTensor、 MeanTensor、 OutputBiasGradientTensor、 OutputGradientTensor、 OutputScaleGradientTensor、 ScaleTensor、 VarianceTensor は、 同じ DataType と DimensionCount である必要があります。
- MeanTensor、 OutputBiasGradientTensor、 OutputScaleGradientTensor、 ScaleTensor、 VarianceTensor の サイズは同じである必要があります。
- InputGradientTensor、 InputTensor、 および OutputGradientTensor の サイズは同じである必要があります。
Tensor のサポート
テンソル | 種類 | Dimensions | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|---|
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 |
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows ビルド 22000 |
サポートされている最小のサーバー | Windows ビルド 22000 |
Header | directml.h |