tensorflow:: عملیات:: کوانتیزه کردن و کمّی کردن V2
#include <array_ops.h>کوانتیزه میکند و سپس یک تانسور را واکانتیزه میکند.
خلاصه
این عملیات، اتلاف دقت حاصل از گذر رو به جلوی کوانتیزه شده را با استفاده از موارد زیر شبیهسازی میکند:
- کوانتیزه کردن تانسور به اعداد نقطه ثابت، که باید با روش کوانتیزه کردن هدف هنگام استفاده در استنتاج مطابقت داشته باشد.
- برای عملیات بعدی، به احتمال زیاد matmul، آن را به اعداد اعشاری تبدیل میکنیم.
روشهای مختلفی برای کوانتیزه کردن وجود دارد. این نسخه فقط از مقیاسبندی استفاده میکند، بنابراین ۰.۰ به ۰ نگاشت میشود.
از مقدار مشخص شده '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 مشخص شده باشند، نیازی نیست که با مقادیر حداقل و حداکثر واقعی در تانسور برابر باشند. برای مثال، در برخی موارد، مشخص کردن این مقادیر به گونهای که احتمال وقوع کمترین مقدار در توزیع ورودی حذف شود، مفید خواهد بود.
این عملیات حداکثر scale_factor را تعیین میکند که محدوده اولیه [input_min, input_max] را به محدودهای که در محدوده کوانتیزه شده قابل نمایش قرار دارد، نگاشت میکند.
این تابع مقیاس را از روی یکی از input_min و input_max تعیین میکند، سپس دیگری را بهروزرسانی میکند تا محدوده قابل نمایش را به حداکثر برساند.
مثلاً
- اگر خروجی علامتدار باشد، num_bits = 8, [input_min, input_max] = [-10.0, 5.0]: از scale_factor برابر با -128 / -10.0 = 12.8 استفاده میکند. در این حالت، input_max را به 127 / 12.8 = 9.921875 بهروزرسانی میکند.
- اگر خروجی علامتدار باشد، num_bits = 8، [input_min, input_max] = [-10.0, 10.0]: از scale_factor برابر با 127 / 10.0 = 12.7 استفاده میکند. در این حالت، input_min را به 128.0 / 12.7 = -10.07874 بهروزرسانی میکند.
- اگر خروجی بدون علامت باشد، input_min مجبور به صفر شدن میشود و فقط از input_max مشخص شده استفاده میشود.
پس از تعیین scale_factor و بهروزرسانی محدوده ورودی، موارد زیر را برای هر مقدار در تانسور «ورودی» اعمال میکند.
خروجی = round(clamp(value, input_min, input_max) * scale_factor) / scale_factor.)
تابع round فوق، مقدار را بر اساس round_mode داده شده گرد میکند.
استدلالها:
- دامنه: یک شیء دامنه
- ورودی: تانسور برای کوانتیزه کردن و سپس واکانتزدایی.
- input_min: اگر
range_given == True، این حداقل مقدار ورودی مورد نیاز برای نمایش را مشخص میکند، در غیر این صورت از مقدار حداقل تانسورinputتعیین میشود. - input_max: اگر
range_given == True، این حداکثر مقدار ورودی مورد نیاز برای نمایش را مشخص میکند، در غیر این صورت از حداکثر مقدار تانسورinputتعیین میشود.
ویژگیهای اختیاری (به Attrs مراجعه کنید):
- signed_input: اینکه آیا کوانتیزاسیون علامتدار است یا بدون علامت. (در واقع این پارامتر باید
signed_outputنامیده میشد) - num_bits: پهنای بیت کوانتیزاسیون.
- range_given: اینکه آیا محدوده داده شده است یا باید از تانسور
inputتعیین شود. - round_mode: ویژگی 'round_mode' کنترل میکند که کدام الگوریتم گرد کردن tie-break هنگام گرد کردن مقادیر اعشاری به معادلهای کوانتیزه شده آنها استفاده شود. حالتهای گرد کردن زیر در حال حاضر پشتیبانی میشوند:
- HALF_TO_EVEN: این حالت پیشفرض round_mode است.
- HALF_UP: گرد کردن به سمت مثبت. در این حالت ۷.۵ به ۸ و -۷.۵ به -۷ گرد میشود.
- narrow_range: اگر درست باشد، آنگاه قدر مطلق حداقل مقدار کوانتیزه شده برابر با حداکثر مقدار کوانتیزه شده است، نه ۱ واحد بیشتر. یعنی برای کوانتیزه کردن ۸ بیتی، حداقل مقدار به جای -۱۲۸، -۱۲۷ است.
بازده:
-
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:: عملیات:: QuantizeAndDequantizeV2:: جذابیتها | تنظیمکنندههای ویژگی اختیاری برای QuantizeAndDequantizeV2 . |
ویژگیهای عمومی
عملیات
Operation operation
خروجی
::tensorflow::Output output
کارکردهای عمومی
کوانتیزه و کمانتیزه کردنV2
QuantizeAndDequantizeV2( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input input_min, ::tensorflow::Input input_max )
کوانتیزه و کمانتیزه کردنV2
QuantizeAndDequantizeV2( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input input_min, ::tensorflow::Input input_max, const QuantizeAndDequantizeV2::Attrs & attrs )
گره
::tensorflow::Node * node() const
عملگر::tensorflow::ورودی
operator::tensorflow::Input() const
عملگر::tensorflow::خروجی
operator::tensorflow::Output() const
توابع استاتیک عمومی
محدوده باریک
Attrs NarrowRange( bool x )
نامبیتس
Attrs NumBits( int64 x )
محدوده داده شده
Attrs RangeGiven( bool x )
حالت گرد
Attrs RoundMode( StringPiece x )
ورودی امضا شده
Attrs SignedInput( bool x )
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2026-11-05 بهوقت ساعت هماهنگ جهانی.