tensorflow:: عملیات:: دکوانتیزه کردن

#include <array_ops.h>

تانسور «ورودی» را به یک تانسور اعشاری تبدیل کنید .

خلاصه

[min_range، max_range] اعشار اسکالر هستند که محدوده خروجی را مشخص می‌کنند. ویژگی 'mode' دقیقاً محاسباتی را که برای تبدیل مقادیر اعشاری به معادل‌های کوانتیزه شده آنها استفاده می‌شود، کنترل می‌کند.

در حالت '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()

مثال حالت MIN_COMBINED

اگر ورودی از نوع QuantizedRelu6 باشد، نوع خروجی quint8 (محدوده 0-255) است، اما محدوده ممکن QuantizedRelu6 ، 0-6 است. بنابراین مقادیر min_range و max_range برابر با 0.0 و 6.0 هستند. Dequantize روی quint8 هر مقدار را می‌گیرد، به عدد اعشاری تبدیل می‌کند و در 6 / 255 ضرب می‌کند. توجه داشته باشید که اگر quantizedtype برابر با qint8 باشد، عملیات قبل از تبدیل، هر مقدار را 128 واحد اضافه می‌کند.

اگر حالت '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 انجام می‌شود. (بنابراین ورودی ۰ همیشه به ۰.۰ نگاشت می‌شود).

ضریب مقیاس‌بندی (scaling_factor) از min_range ، max_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: حداکثر مقدار اسکالر ممکن برای ورودی تولید می‌شود.

بازده:

  • 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)
Mode (StringPiece x)
NarrowRange (bool x)

ساختارها

tensorflow:: عملیات:: کمّی‌سازی:: جذابیت‌ها

تنظیم‌کننده‌های ویژگی اختیاری برای Dequantize .

ویژگی‌های عمومی

عملیات

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
)

حالت

Attrs Mode(
  StringPiece x
)

محدوده باریک

Attrs NarrowRange(
  bool x
)