tensorflow:: ops:: QuantizeDownAndShrinkRange

#include <math_ops.h>

量子化された「入力」テンソルを、より低精度の「出力」に変換します。

まとめ

低ビット深度の利用を最大化するために値を実際に配分し、それに応じて出力の最小値と最大値の範囲を調整する。

[input_min, input_max] は、入力データの浮動小数点解釈の範囲を指定するスカラー浮動小数点数です。たとえば、input_min が -1.0f、input_max が 1.0f で、quint16 量子化データを扱っている場合、16 ビットデータの 0 値は -1.0f として解釈され、65535 は 1.0f として解釈されます。

この演算子は、データに含まれる実際の最小値と最大値を計算することで、ビット深度の低い出力にできるだけ多くの精度を詰め込もうとします。たとえば、quint16 の入力に 16,384 より小さい値も 49,152 より大きい値もないとします。つまり、実際に必要な範囲は半分だけで、すべての浮動小数点解釈は -0.5f から 0.5f の間にあるため、データを quint8 出力に圧縮する場合は、入力の最小値と最大値から推測される理論上の -1.0f から 1.0f の範囲ではなく、この範囲を使用できます。

実際には、これはQuantizedMatMulのような演算の出力に対して最も有効です。QuantizedMatMulは入力よりも高いビット深度の出力を生成でき、出力範囲も広い可能性がありますが、実際には入力値の分布は可能な範囲のごく一部しか使用しません。この演算子にその出力を入力することで、精度を最小限に損なうことなく、32ビットから8ビットに削減できます。

議論:

  • スコープ:スコープオブジェクト
  • input_min: 量子化された入力値の最小値が表す浮動小数点値。
  • input_max: 量子化された入力値の最大値を表す浮動小数点値。
  • out_type: 出力のタイプ。Tinputよりも低いビット深度である必要があります。

返品:

  • Output出力
  • Output output_min: 量子化された出力値の最小値が表す浮動小数点値。
  • Output output_max: 量子化された最大出力値が表す浮動小数点値。

コンストラクターとデストラクタ

QuantizeDownAndShrinkRange (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input input_min, :: tensorflow::Input input_max, DataType out_type)

公開属性

operation
output
output_max
output_min

公開属性

手術

Operation operation

出力

::tensorflow::Output output

出力最大

::tensorflow::Output output_max

出力最小値

::tensorflow::Output output_min

公的機能

範囲を縮小して量子化する

 QuantizeDownAndShrinkRange(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input input_min,
  ::tensorflow::Input input_max,
  DataType out_type
)