جریان تنسور:: عملیات:: QuantizeAndDequantizeV2
#include <array_ops.h>
کوانتیزه می کند و سپس یک تانسور را dequantize می کند.
خلاصه
این عملیات تلفات دقت را از عبور کوانتیزه شده به جلو شبیه سازی می کند:
- کمی کردن تانسور به اعداد نقطه ثابت، که باید با روش کوانتیزاسیون هدف مطابقت داشته باشد، زمانی که در استنتاج استفاده می شود.
- کمی کردن آن به اعداد ممیز شناور برای عملیات زیر، به احتمال زیاد matmul.
روش های مختلفی برای کوانتیزه کردن وجود دارد. این نسخه فقط از مقیاس بندی استفاده می کند، بنابراین 0.0 به 0 نقشه می دهد.
از «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_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.07 = 12.07 - 128.0 / 12.07 - 8 استفاده می کند.
- اگر خروجی بدون علامت باشد، input_min مجبور می شود 0 باشد و فقط input_max مشخص شده استفاده می شود.
پس از تعیین scale_factor و به روز رسانی محدوده ورودی، موارد زیر را برای هر مقدار در تانسور "ورودی" اعمال می کند.
خروجی = گرد (گیره (مقدار، ورودی_دقیقه، حداکثر ورودی) * ضریب_مقیاس) / ضریب_مقیاس.
تابع دور بالا مقدار را بر اساس round_mode داده شده گرد می کند.
استدلال ها:
- scope: یک شی Scope
- ورودی: تانسور برای کوانتیزه کردن و سپس کمی کردن.
- input_min: اگر
range_given == True
، حداقل مقدار ورودی را که باید نمایش داده شود را مشخص میکند، در غیر این صورت از مقدار min تانسورinput
تعیین میشود. - input_max: اگر
range_given == True
، حداکثر مقدار ورودی را که باید نمایش داده شود را مشخص می کند، در غیر این صورت از حداکثر مقدار تانسورinput
تعیین می شود.
ویژگی های اختیاری (به Attrs
مراجعه کنید):
- signed_input: اینکه آیا کوانتیزاسیون دارای علامت یا بدون علامت باشد. (در واقع این پارامتر باید
signed_output
نامیده می شد) - num_bits: پهنای بیت کوانتیزاسیون.
- range_given: اینکه آیا محدوده داده شده است یا باید از تانسور
input
تعیین شود. - round_mode: ویژگی «round_mode» کنترل میکند که کدام الگوریتم گرهشکنی گرد هنگام گرد کردن مقادیر شناور به معادلهای کوانتیزهشده آنها استفاده میشود. حالت های گرد کردن زیر در حال حاضر پشتیبانی می شوند:
- HALF_TO_EVEN: این حالت round_mode پیشفرض است.
- HALF_UP: به سمت مثبت گرد کنید. در این حالت 7.5 دور تا 8 و -7.5 دور تا -7.
- narrow_range: اگر True باشد، قدر مطلق حداقل مقدار کوانتیزه شده به جای 1 بزرگتر، همان مقدار حداکثر کوانتیزه شده است. یعنی برای کوانتیزاسیون 8 بیتی، حداقل مقدار 127- به جای 128- است.
برمیگرداند:
-
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:: ops:: QuantizeAndDequantizeV2:: Attrs | تنظیم کننده های ویژگی اختیاری برای QuantizeAndDequantizeV2 . |
صفات عمومی
عملیات
Operation operation
خروجی
::tensorflow::Output output
توابع عمومی
QuantizeAndDequantizeV2
QuantizeAndDequantizeV2( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input input_min, ::tensorflow::Input input_max )
QuantizeAndDequantizeV2
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 )
NumBits
Attrs NumBits( int64 x )
RangeGiven
Attrs RangeGiven( bool x )
حالت گرد
Attrs RoundMode( StringPiece x )
SignedInput
Attrs SignedInput( bool x )
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2024-11-14 بهوقت ساعت هماهنگ جهانی.