tensorflow :: ops :: كوك كردن
#include <array_ops.h>
Dequantize از 'ورودی تانسور را به یک شناور تانسور .
خلاصه
[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()
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 هر مقدار گرفته می شود ، برای شناور فرستاده می شود و در 6/255 ضرب می شود. توجه داشته باشید كه اگر نوع quantizedty 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 به عنوان مثال
حالت SCALED
با رویه کوانتاسیون استفاده شده در QuantizeAndDequantize{V2|V3}
مطابقت دارد.
اگر حالت SCALED
، ما از طیف وسیعی از نوع خروجی استفاده نمی کنیم و کمترین مقدار ممکن را برای تقارن انتخاب می کنیم (به عنوان مثال ، دامنه خروجی -127 تا 127 است ، نه -128 تا 127 برای کوانتاسیون 8 بیتی امضا شده) به طوری که 0.0 نقشه را به 0 نشان می دهد.
ابتدا محدوده مقادیر را در تنسور خود پیدا می کنیم. محدوده ای که ما استفاده می کنیم همیشه بر روی 0 متمرکز است ، بنابراین ما m را به عنوان
m = max(abs(input_min), abs(input_max))می یابیم
دامنه تانسور ورودی ما سپس [-m, m]
.
بعد ، سطلهای کوانتیزه کردن در نقطه ثابت خود را انتخاب می کنیم ، [min_fixed, max_fixed]
. اگر T امضا شده باشد ، این
num_bits = sizeof(T) * 8 [min_fixed, max_fixed] = [-(1 << (num_bits - 1) - 1), (1 << (num_bits - 1)) - 1]است
در غیر این صورت ، اگر T امضا نشده باشد ، محدوده نقطه ثابت
[min_fixed, max_fixed] = [0, (1 << num_bits) - 1]است
ما از این فاکتور مقیاس گذاری ، s:
s = (2 * m) / (max_fixed - min_fixed)محاسبه می کنیم
اکنون می توانیم عناصر تنسور خود را از حالت کمیت تقسیم کنیم:
result = input * s
استدلال ها:
- دامنه: یک شی Sc Scope
- 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 |
توابع استاتیک عمومی | |
---|---|
Mode (StringPiece x) |
سازه ها | |
---|---|
tensorflow :: ops :: Dequantize :: Attrs | تنظیم کننده های ویژگی اختیاری برای 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 Mode( StringPiece x )
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2020-04-20 بهوقت ساعت هماهنگ جهانی.