DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC 構造体 (directml.h)

入力テンソルのスライディング ウィンドウ内の要素の量子化された値を平均化します。 この演算子は、数学的には、入力をデカンタイズしてから平均プーリングを実行し、出力を量子化することと同じです。

デカンタイズ関数

f(Input, Scale, ZeroPoint) = (Input - ZeroPoint) * Scale

量子化関数

f(Input, Scale, ZeroPoint) = clamp(round(Input / Scale) + ZeroPoint, Min, Max)

重要

この API は、DirectML スタンドアロン再頒布可能パッケージの一部として使用できます (Microsoft.AI.DirectML バージョン 1.13 以降を参照してください)。 DirectML バージョン履歴も参照してください。

構文

struct DML_QUANTIZED_LINEAR_AVERAGE_POOLING_OPERATOR_DESC
{
    const DML_TENSOR_DESC* InputTensor;
    const DML_TENSOR_DESC* InputScaleTensor;
    _Maybenull_ const DML_TENSOR_DESC* InputZeroPointTensor;
    const DML_TENSOR_DESC* OutputScaleTensor;
    _Maybenull_ const DML_TENSOR_DESC* OutputZeroPointTensor;
    const DML_TENSOR_DESC* OutputTensor;
    UINT DimensionCount;
    _Field_size_(DimensionCount) const UINT* Strides;
    _Field_size_(DimensionCount) const UINT* WindowSize;
    _Field_size_(DimensionCount) const UINT* StartPadding;
    _Field_size_(DimensionCount) const UINT* EndPadding;
    _Field_size_(DimensionCount) const UINT* Dilations;
    BOOL IncludePadding;
};

メンバー

InputTensor

型: const DML_TENSOR_DESC*

4D には { BatchCount, ChannelCount, Height, Width }、5D には { BatchCount, ChannelCount, Depth, Height, Weight }サイズの入力テンソル。

InputScaleTensor

型: const DML_TENSOR_DESC*

InputTensor スケール データを含むテンソル。 InputScaleTensor の予想される次元は、テンソル単位の量子化が必要な場合は { 1, 1, 1, 1 }、チャネル単位の量子化が必要な場合は { 1, ChannelCount, 1, 1 } です。 これらのスケール値は、InputTensor 値をデカンタイズするために使用されます。

InputZeroPointTensor

型: _Maybenull_ const DML_TENSOR_DESC*

InputTensor ゼロ ポイント データを含む省略可能なテンソル。 InputZeroPointTensor の予想される次元は、テンソル単位の量子化が必要な場合は { 1, 1, 1, 1 }、チャネル単位の量子化が必要な { 1, ChannelCount, 1, 1 } 場合です。 これらのゼロ ポイント値は、InputTensor 値をデカンタイズするために使用されます。

OutputScaleTensor

型: const DML_TENSOR_DESC*

OutputTensor スケール データを含むテンソル。 OutputScaleTensor の予想される次元は、テンソル単位の量子化が必要な場合は { 1, 1, 1, 1 }、チャネルごとの量子化が必要な場合は { 1, ChannelCount, 1, 1 } です。 これらのスケール値は、OutputTensor 値を量子化するために使用されます。

OutputZeroPointTensor

型: _Maybenull_ const DML_TENSOR_DESC*

OutputTensor のゼロ ポイント データを含む省略可能なテンソル。 OutputZeroPointTensor の予想される次元は、テンソル単位の量子化が必要な場合は { 1, 1, 1, 1 }、チャネル単位の量子化が必要な場合は { 1, ChannelCount, 1, 1 } です。 このゼロポイント値は、OutputTensor 値を量子化するために使用されます。

OutputTensor

型: const DML_TENSOR_DESC*

出力テンソルの説明。 出力テンソルのサイズは次のように計算できます。

OutputTensor->Sizes[0] = InputTensor->Sizes[0];
OutputTensor->Sizes[1] = InputTensor->Sizes[1];

for (UINT i = 0; i < DimensionCount; ++i) {
  UINT PaddedSize = InputTensor->Sizes[i + 2] + StartPadding[i] + EndPadding[i];
  OutputTensor->Sizes[i + 2] = (PaddedSize - WindowSizes[i]) / Strides[i] + 1;
}

DimensionCount

型: UINT

入力テンソル InputTensor の空間次元の数。これは、スライディング ウィンドウ WindowSize の次元の数にも対応します。 この値は、StridesStartPaddingndPadding 配列のサイズも決定します。 InputTensor が 4D の場合は 2、5D テンソルの場合は 3 に設定する必要があります。

Strides

型: _Field_size_(DimensionCount) const UINT*

サイズが、DimensionCount が 2 に設定されている場合は { Height, Width }、3 に設定されている場合は { Depth, Height, Width } の、スライディング ウィンドウ分析コードのストライド。

WindowSize

型: _Field_size_(DimensionCount) const UINT*

DimensionCount が 2 に設定されている場合は { Height, Width }、3 に設定されている場合は { Depth, Height, Width } のスライディング ウィンドウの次元。

StartPadding

型: _Field_size_(DimensionCount) const UINT*

入力テンソル InputTensor の各空間次元の先頭に適用される埋め込み要素の数。 値は、DimensionCount が 2 に設定されている場合、または { Depth, Height, Width } が 3 に設定されている場合に { Height, Width } に表示されます。

EndPadding

型: _Field_size_(DimensionCount) const UINT*

入力テンソル InputTensor の各空間次元の末尾に適用される埋め込み要素の数。 値は、DimensionCount が 2 に設定されている場合、または { Depth, Height, Width } が 3 に設定されている場合に { Height, Width } に表示されます。

Dilations

型: _Field_size_(DimensionCount) const UINT*

スライディング ウィンドウ内の要素がその値のすべての要素に対して選択される、入力テンソル InputTensor の各空間次元の値。 値は、DimensionCount が 2 に設定されている場合、または { Depth, Height, Width } が 3 に設定されている場合に { Height, Width } に表示されます。

IncludePadding

型: BOOL

スライディング ウィンドウ内のすべての要素の平均値を計算するときに、空間エッジの周囲に埋め込み要素を含めるかどうかを示します。 この値が FALSE に設定されている場合、埋め込み要素は平均計算の除数値の一部としてカウントされません。

可用性

この演算子は、DML_FEATURE_LEVEL_6_2 で導入されました。

Tensor 制約

  • InputTensorOutputTensor には、同じ DimensionCount が必要です。
  • InputTensorInputZeroPointTensor には同じ DataType が必要です。
  • OutputTensorOutputZeroPointTensor には同じ DataType が必要です。

Tensor のサポート

Tensor 種類 サポートされているディメンション数 サポートされるデータ型
InputTensor 入力 4 から 5 INT8、UINT8
InputScaleTensor 入力 1 から 5 FLOAT32
InputZeroPointTensor 省略可能な入力 1 から 5 INT8、UINT8
OutputScaleTensor 入力 1 から 5 FLOAT32
OutputZeroPointTensor 省略可能な入力 1 から 5 INT8、UINT8
OutputTensor 出力 4 から 5 INT8、UINT8

要件

   
ヘッダー directml.h