DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC構造体 (directml.h)

InputTensor を使用して FilterTensor の畳み込みを実行します。 この演算子は、量子化されたデータに対して前方畳み込みを実行します。 この演算子は、入力のデカンタイズ、コンボルブ、出力の量子化と数学的に同じです。

この演算子で使用される量子化線形関数は、線形量子化関数です

Dequantize 関数

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

クオンタイズ関数

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

構文

struct DML_QUANTIZED_LINEAR_CONVOLUTION_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *InputScaleTensor;
  const DML_TENSOR_DESC *InputZeroPointTensor;
  const DML_TENSOR_DESC *FilterTensor;
  const DML_TENSOR_DESC *FilterScaleTensor;
  const DML_TENSOR_DESC *FilterZeroPointTensor;
  const DML_TENSOR_DESC *BiasTensor;
  const DML_TENSOR_DESC *OutputScaleTensor;
  const DML_TENSOR_DESC *OutputZeroPointTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  DimensionCount;
  const UINT            *Strides;
  const UINT            *Dilations;
  const UINT            *StartPadding;
  const UINT            *EndPadding;
  UINT                  GroupCount;
};

メンバー

InputTensor

型: const DML_TENSOR_DESC*

入力データを含むテンソル。 InputTensor の予想されるディメンションは です{ InputBatchCount, InputChannelCount, InputHeight, InputWidth }

InputScaleTensor

型: const DML_TENSOR_DESC*

入力スケール データを含むテンソル。 の予想されるディメンション InputScaleTensor は です { 1, 1, 1, 1 }。 このスケール値は、入力値をデカンタイズするために使用されます。

InputZeroPointTensor

型: _Maybenull_ const DML_TENSOR_DESC*

入力ゼロ ポイント データを含む省略可能なテンソル。 InputZeroPointTensor の予想されるディメンションは です{ 1, 1, 1, 1 }。 このゼロポイント値は、入力値をデカンタイズするために使用されます。

FilterTensor

型: const DML_TENSOR_DESC*

フィルター データを含むテンソル。 FilterTensor の予想されるディメンションは です{ FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }

FilterScaleTensor

型: const DML_TENSOR_DESC*

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

FilterZeroPointTensor

型: _Maybenull_ const DML_TENSOR_DESC*

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

BiasTensor

型: _Maybenull_ const DML_TENSOR_DESC*

バイアス データを含むテンソル。 バイアステンソルは、結果に追加される畳み込みの最後に出力テンソル全体でブロードキャストされるデータを含むテンソルです。 BiasTensor の予想される寸法は 4D 用です { 1, OutputChannelCount, 1, 1 }

OutputScaleTensor

型: const DML_TENSOR_DESC*

出力スケール データを含むテンソル。 OutputScaleTensor の予想されるディメンションは です { 1, 1, 1, 1 }。 この入力スケール値は、畳み込み出力値を量子化するために使用されます。

OutputZeroPointTensor

型: _Maybenull_ const DML_TENSOR_DESC*

フィルターのゼロ ポイント データを含む省略可能なテンソル。 OutputZeroPointTensor の予想されるディメンションは です { 1, 1, 1, 1 }。 この入力ゼロポイント値は、出力値の畳み込みを量子化するために使用されます。

OutputTensor

型: const DML_TENSOR_DESC*

結果を書き込むテンソル。 OutputTensor の予想されるディメンションは です { OutputBatchCount, OutputChannelCount, OutputHeight, OutputWidth }

DimensionCount

型: UINT

畳み込み操作の空間ディメンションの数。 空間ディメンションは、畳み込みフィルター テンソル FilterTensor の下位ディメンションです。 この値は、StridesDilationsStartPadding、EndPadding 配列のサイズも決定します。 2 の値のみがサポートされています。

Strides

型: _Field_size_(DimensionCount) const UINT*

畳み込み操作のストライド。 これらのストライドは畳み込みフィルターに適用されます。 これらは、DML_TENSOR_DESCに含まれるテンソルストライドとは別です。

Dilations

型: _Field_size_(DimensionCount) const UINT*

畳み込み操作の拡張。 拡張は、フィルター カーネルの要素に適用されるストライドです。 これは、内部フィルター カーネル要素にゼロを埋め込むことで、より大きなフィルター カーネルをシミュレートする効果があります。

StartPadding

型: _Field_size_(DimensionCount) const UINT*

畳み込み操作のフィルターと入力テンソルの各空間ディメンションの先頭に適用されるパディング値。

EndPadding

型: _Field_size_(DimensionCount) const UINT*

畳み込み操作のフィルターと入力テンソルの各空間ディメンションの末尾に適用されるパディング値。

GroupCount

型: UINT

畳み込み操作を分割するグループの数。 GroupCount は、 GroupCount を入力チャネル数と等しく設定することで、深さ方向の畳み込みを実現するために使用できます。 これにより、畳み込みを入力チャネルごとに個別の畳み込みに分割します。

可用性

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

テンソル制約

  • BiasTensorFilterTensorInputTensor、および OutputTensor は、同じ DimensionCount を持つ必要があります。
  • OutputTensorOutputZeroPointTensor には、同じ DataType が必要です。
  • InputTensorInputZeroPointTensor には、同じ DataType が必要です。
  • FilterTensorFilterZeroPointTensor には、同じ DataType が必要です。

Tensor のサポート

DML_FEATURE_LEVEL_5_2以上

テンソル 種類 サポートされているディメンション数 サポートされるデータ型
InputTensor 入力 3 から 4 INT8、UINT8
InputScaleTensor 入力 1 から 4 FLOAT32
InputZeroPointTensor 省略可能な入力 1 から 4 INT8、UINT8
FilterTensor 入力 3 から 4 INT8、UINT8
FilterScaleTensor 入力 1 から 4 FLOAT32
FilterZeroPointTensor 省略可能な入力 1 から 4 INT8、UINT8
BiasTensor 省略可能な入力 3 から 4 INT32
OutputScaleTensor 入力 1 から 4 FLOAT32
OutputZeroPointTensor 省略可能な入力 1 から 4 INT8、UINT8
OutputTensor 出力 3 から 4 INT8、UINT8

DML_FEATURE_LEVEL_4_0以上

テンソル 種類 サポートされているディメンション数 サポートされるデータ型
InputTensor 入力 3 から 4 INT8、UINT8
InputScaleTensor 入力 1 から 4 FLOAT32
InputZeroPointTensor 省略可能な入力 1 から 4 INT8、UINT8
FilterTensor 入力 3 から 4 INT8、UINT8
FilterScaleTensor 入力 3 から 4 FLOAT32
FilterZeroPointTensor 省略可能な入力 1 から 4 INT8、UINT8
BiasTensor 省略可能な入力 3 から 4 INT32
OutputScaleTensor 入力 1 から 4 FLOAT32
OutputZeroPointTensor 省略可能な入力 1 から 4 INT8、UINT8
OutputTensor 出力 3 から 4 INT8、UINT8

DML_FEATURE_LEVEL_2_1以上

テンソル 種類 サポートされているディメンション数 サポートされるデータ型
InputTensor 入力 4 INT8、UINT8
InputScaleTensor 入力 4 FLOAT32
InputZeroPointTensor 省略可能な入力 4 INT8、UINT8
FilterTensor 入力 4 INT8、UINT8
FilterScaleTensor 入力 4 FLOAT32
FilterZeroPointTensor 省略可能な入力 4 INT8、UINT8
BiasTensor 省略可能な入力 4 INT32
OutputScaleTensor 入力 4 FLOAT32
OutputZeroPointTensor 省略可能な入力 4 INT8、UINT8
OutputTensor 出力 4 INT8、UINT8

要件

要件
サポートされている最小のクライアント Windows 10 ビルド 20348
サポートされている最小のサーバー Windows 10 ビルド 20348
Header directml.h