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 با رویکرد کوانتیزاسیون مورد استفاده در QuantizeAndDequantize{V2|V3} مطابقت دارد.
اگر حالت SCALED باشد، از کل محدوده نوع خروجی استفاده نمیکنیم و کمترین مقدار ممکن برای تقارن را حذف میکنیم (مثلاً محدوده خروجی -۱۲۷ تا ۱۲۷ است، نه -۱۲۸ تا ۱۲۷ برای کوانتیزاسیون ۸ بیتی علامتدار)، به طوری که ۰.۰ به ۰ نگاشت میشود.
ابتدا محدوده مقادیر در تانسور خود را پیدا میکنیم. محدودهای که استفاده میکنیم همیشه روی ۰ متمرکز است، بنابراین 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
استدلالها:
- دامنه: یک شیء دامنه
- 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:: عملیات:: کمّیسازی:: جذابیتها | تنظیمکنندههای ویژگی اختیاری برای 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 و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2026-11-05 بهوقت ساعت هماهنگ جهانی.