このページは Cloud Translation API によって翻訳されました。
Switch to English

tensorflow :: ops :: QuantizeAndDequantizeV2

#include <array_ops.h>

テンソルを量子化してから逆量子化します。

概要

この演算は、量子化されたフォワードパスからの精度損失を次のようにシミュレートします。

  1. テンソルを固定小数点数に量子化します。推論で使用する場合、ターゲットの量子化方法と一致する必要があります。
  2. 次のops、おそらくmatmulの浮動小数点数に逆量子化します。

量子化にはさまざまな方法があります。このバージョンはスケーリングのみを使用するため、0.0は0にマップされます。

量子化出力タイプで指定された「num_bits」から、表現可能な量子化値の最小値と最大値を決定します。

例えば

  • [-128、127]符号付き、num_bits = 8、または
  • [0、255]符号なしの場合、num_bits = 8。

range_given == Falseの場合、最初のinput_min、input_maxは入力テンソルの最小値と最大値として自動的に決定されます。それ以外の場合は、指定されたinput_min、input_maxの値が使用されます。

注:input_min、input_maxが指定されている場合、それらはテンソルの実際の最小値と最大値に等しい必要はありません。たとえば、場合によっては、これらの値を指定して、入力分布の極端な低確率が切り取られるようにすると便利な場合があります。

この操作は、初期の[input_min、input_max]範囲を、表現可能な量子化範囲内にある範囲にマップする最大のscale_factorを決定します。

input_minとinput_maxの1つからスケールを決定し、表現可能な範囲を最大化するためにもう1つを更新します。

例えば

  • 出力が符号付きの場合、num_bits = 8、[input_min、input_max] = [-10.0、5.0]:-128 / -10.0 = 12.8のscale_factorを使用します。この場合、input_maxを127 / 12.8 =に更新します9.921875
  • 出力が符号付きの場合、num_bits = 8、[input_min、input_max] = [-10.0、10.0]:127 / 10.0 = 12.7のscale_factorを使用します。この場合、input_minを128.0 / 12.7 = -10.07874に更新します
  • 出力が符号なしの場合、input_minは強制的に0になり、指定されたinput_maxのみが使用されます。

scale_factorを決定し、入力範囲を更新した後、「入力」テンソルの各値に以下を適用します。

output = round(clamp(value、input_min、input_max)* scale_factor)/ scale_factor。

上記のround関数は、指定されたround_modeに基づいて値を丸めます。

引数:

  • scope: Scopeオブジェクト
  • 入力:量子化してから逆量子化するテンソル
  • input_min: range_given == True場合、これは表現する必要がある最小入力値を指定します。それ以外の場合は、 inputテンソルの最小値から決定されinput
  • input_max: range_given == True場合、これは表現する必要がある最大入力値を指定します。それ以外の場合は、 inputテンソルの最大値から決定されinput

オプションの属性( Attrs参照):

  • signed_input:量子化が符号付きか符号なしか。 (実際には、このパラメーターはsigned_outputと呼ばれているはずsigned_output
  • num_bits:量子化のビット幅。
  • range_given:範囲が指定されているか、 inputテンソルから決定する必要があるか。
  • round_mode: 'round_mode'属性は、float値を量子化された同等値に丸めるときに使用される丸めタイブレークアルゴリズムを制御します。現在、次の丸めモードがサポートされています。
  • HALF_TO_EVEN:これはデフォルトのround_modeです。
  • HALF_UP:正の方向に丸めます。このモードでは、7.5は8に切り上げ、-7.5は-7に切り上げます。
  • arrow_range:Trueの場合、量子化された最小値の絶対値は、量子化された最大値と同じですが、1大きくはありません。つまり、8ビットの量子化の場合、最小値は-128ではなく-127です。

戻り値:

  • Output :出力テンソル。

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

QuantizeAndDequantizeV2 (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input input_min, :: tensorflow::Input input_max)
QuantizeAndDequantizeV2 (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input input_min, :: tensorflow::Input input_max, const QuantizeAndDequantizeV2::Attrs & attrs)

公開属性

operation
output

公開機能

node () const
::tensorflow::Node *
operator::tensorflow::Input () const
operator::tensorflow::Output () const

パブリック静的関数

NarrowRange (bool x)
NumBits (int64 x)
RangeGiven (bool x)
RoundMode (StringPiece x)
SignedInput (bool x)

構造

tensorflow :: ops :: QuantizeAndDequantizeV2 :: Attrs

QuantizeAndDequantizeV2のオプションの属性セッター。

公開属性

操作

Operation operation

出力

::tensorflow::Output output

公開機能

QuantizeAndDequantizeV2

 QuantizeAndDequantizeV2(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input input_min,
  ::tensorflow::Input input_max
)

QuantizeAndDequantizeV2

 QuantizeAndDequantizeV2(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input input,
  ::tensorflow::Input input_min,
  ::tensorflow::Input input_max,
  const QuantizeAndDequantizeV2::Attrs & attrs
)

ノード

::tensorflow::Node * node() const 

operator :: tensorflow :: Input

 operator::tensorflow::Input() const 

operator :: tensorflow :: Output

 operator::tensorflow::Output() const 

パブリック静的関数

狭い範囲

Attrs NarrowRange(
  bool x
)

NumBits

Attrs NumBits(
  int64 x
)

RangeGiven

Attrs RangeGiven(
  bool x
)

RoundMode

Attrs RoundMode(
  StringPiece x
)

SignedInput

Attrs SignedInput(
  bool x
)