入力テンソルのスライディング ウィンドウ内の要素の量子化された値を平均化します。 この演算子は、数学的には、入力をデカンタイズしてから平均プーリングを実行し、出力を量子化することと同じです。
デカンタイズ関数
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*
サイズの入力テンソル{ BatchCount, ChannelCount, Height, Width } 4D の場合は { BatchCount, ChannelCount, Depth, Height, Weight }、5D の場合は。
InputScaleTensor
型: const DML_TENSOR_DESC*
InputTensor スケール データを含むテンソル。
InputScaleTensor の予想されるディメンションは、テンソル単位の量子化が必要な場合は{ 1, 1, 1, 1 }、チャネル単位の量子化が必要な場合は{ 1, ChannelCount, 1, 1 }されます。 これらのスケール値は、 InputTensor 値をデカンタイズするために使用されます。
注
スケール値が 0 の場合、未定義の動作になります。
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 値を量子化するために使用されます。
注
スケール値が 0 の場合、未定義の動作になります。
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 のディメンションの数にも対応します。 この値は、 Strides、 StartPadding、 EndPadding 配列のサイズも決定します。 InputTensor が 4D の場合は 2、5D テンソルの場合は 3 に設定する必要があります。
Strides
型: _Field_size_(DimensionCount) const UINT*
{ Height, Width } が 2 に設定されている場合にサイズのスライディング ウィンドウディメンションのストライド、または 3 に設定すると{ Depth, Height, Width }。
WindowSize
型: _Field_size_(DimensionCount) const UINT*
{ Height, Width } が 2 に設定されている場合はのスライディング ウィンドウの寸法。3 に設定すると{ Depth, Height, Width }。
StartPadding
型: _Field_size_(DimensionCount) const UINT*
入力テンソル InputTensor の各空間ディメンションの先頭に適用されるパディング要素の数。
{ Height, Width } が 2 に設定されている場合は値が、3 に設定すると{ Depth, Height, Width }されます。
EndPadding
型: _Field_size_(DimensionCount) const UINT*
入力テンソル InputTensor の各空間ディメンションの末尾に適用されるパディング要素の数。
{ Height, Width } が 2 に設定されている場合は値が、3 に設定すると{ Depth, Height, Width }されます。
Dilations
型: _Field_size_(DimensionCount) const UINT*
スライディング ウィンドウ内の要素がその値のすべての要素に対して選択される 、入力テンソル InputTensor の各空間ディメンションの値。
{ Height, Width } が 2 に設定されている場合は値が、3 に設定すると{ Depth, Height, Width }されます。
IncludePadding
型: BOOL
スライディング ウィンドウ内のすべての要素の平均値を計算するときに、空間エッジの周囲に埋め込み要素を含めるかどうかを示します。 値が FALSE に設定されている場合、埋め込み要素は平均計算の除数値の一部としてカウントされません。
可用性
この演算子は 、DML_FEATURE_LEVEL_6_2で導入されました。
Tensor 制約
- InputTensor と OutputTensor には、同じ DimensionCount が必要です。
- InputTensor と InputZeroPointTensor には同じ DataType が必要です。
- OutputTensor と OutputZeroPointTensor には同じ DataType が必要です。
Tensor のサポート
| テンソル | 優しい | サポートされているディメンション数 | サポートされているデータ型 |
|---|---|---|---|
| インプットテンソル | インプット | 4 ~ 5 | INT8、UINT8 |
| インプットスケールテンソル | インプット | 1 ~ 5 | FLOAT32 |
| InputZeroPointTensor (英語) | 省略可能な入力 | 1 ~ 5 | INT8、UINT8 |
| OutputScaleTensor (英語) | インプット | 1 ~ 5 | FLOAT32 |
| OutputZeroPointTensor (英語) | 省略可能な入力 | 1 ~ 5 | INT8、UINT8 |
| 出力テンソル | アウトプット | 4 ~ 5 | INT8、UINT8 |
要求事項
| ヘッダ | directml.h |