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

tensorflow :: OPS :: 逆量子化

#include <array_ops.h>

逆量子化フロートまたはbfloat16に「入力」テンソルをテンソル

概要

[min_range、MAX_RANGE]は出力の範囲を指定スカラー浮動小数点数です。計算は、その量子化された同等物にfloat値を変換するために使用されているまさに「モード」属性を制御します。

「MIN_COMBINED」モードでは、テンソルの各値は以下のものを受けることになります。

if T == qint8: in[i] += (range(T) + 1)/ 2.0
out[i] = min_range + (in[i]* (max_range - min_range) / range(T))
ここでrange(T) = numeric_limits ::max() - numeric_limits ::min() range(T) = numeric_limits ::max() - numeric_limits ::min() range(T) = numeric_limits ::max() - numeric_limits ::min()

MIN_COMBINEDモードの例

入力から来る場合QuantizedRelu6 、出力タイプはquint8(0~255の範囲)であるがの可能な範囲QuantizedRelu6は 0-6です。 min_rangeとMAX_RANGE値は、従って、0.0および6.0です。 逆量子化 quint8にはquantizedtypeがqint8ある場合、動作はさらに、鋳造前に128で各値を追加することを6/255メモを掛け、各値をとる浮動小数点へのキャスト、およびだろう。

モードは「MIN_FIRST」の場合、このアプローチが使用されます。

num_discrete_values = 1 << (# of bits in T)
range_adjust = num_discrete_values / (num_discrete_values - 1)
range = (range_max - range_min) * range_adjust
range_scale = range / num_discrete_values
const double offset_input = static_cast(input) - lowest_quantized;
result = range_min + ((input - numeric_limits::min()) * range_scale)

モードがされた場合SCALED 、逆量子化はscaling_factorによって、各入力値を乗算することによって行われます。 (したがって、0の入力は、常に0.0にマップ)。

scaling_factorはから決定さmin_rangemax_range 、及びnarrow_rangeと互換性のある方法でQuantizeAndDequantize{V2|V3}QuantizeV2 :以下のアルゴリズムを使用して、

  

  const int min_expected_T = std::numeric_limits::min() +
    (narrow_range ? 1 : 0);
  const int max_expected_T = std::numeric_limits::max();
  const float max_expected_T = std::numeric_limits::max();

  const float scale_factor =
    (std::numeric_limits::min() == 0) ? (max_range / max_expected_T)
                                         : std::max(min_range / min_expected_T,
                                                    max_range / max_expected_T);

引数:

  • スコープ: スコープオブジェクト
  • min_range:おそらく入力のために生成最小スカラー値。
  • MAX_RANGE:おそらく入力のために製造最大スカラー値。

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

  • DTYPE:出力テンソルのタイプ。現在、 逆量子化は、 floatとbfloat16をサポートしています。 「DTYPEは」「bfloat16」である場合、それだけで「MIN_COMBINED」モードをサポートしています。

戻り値:

  • Output :出力テンソル。

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

Dequantize (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input min_range, :: tensorflow::Input max_range)
Dequantize (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input min_range, :: tensorflow::Input max_range, const Dequantize::Attrs & attrs)

パブリック属性

operation
output

公共の機能

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

公共の静的な機能

Axis (int64 x)
Dtype (DataType x)
Mode (StringPiece x)
NarrowRange (bool x)

構造体

tensorflow :: OPS ::逆量子化:: ATTRS

以下のためのオプションの属性セッター逆量子化

パブリック属性

操作

 Operation operation

出力

:: tensorflow::Output output

公共の機能

逆量子化

 Dequantize(
  const :: tensorflow::Scope & scope,
  :: tensorflow::Input input,
  :: tensorflow::Input min_range,
  :: tensorflow::Input max_range
)

逆量子化

 Dequantize(
  const :: tensorflow::Scope & scope,
  :: tensorflow::Input input,
  :: tensorflow::Input min_range,
  :: tensorflow::Input max_range,
  const Dequantize::Attrs & attrs
)

ノード

::tensorflow::Node * node() const 

演算子:: tensorflow ::入力

 operator::tensorflow::Input() const 

演算子:: tensorflow ::出力

 operator::tensorflow::Output() const 

公共の静的な機能

 Attrs Axis(
  int64 x
)

DTYPE

 Attrs Dtype(
  DataType x
)

モード

 Attrs Mode(
  StringPiece x
)

狭い範囲

 Attrs NarrowRange(
  bool x
)