تينسورفلو :: العمليات :: دك
#include <array_ops.h>
Dequantize و"الإدخال" موتر الى تعويم التنسور .
ملخص
[min_range، max_range] عوامات رقمية تحدد نطاق بيانات "الإدخال". تتحكم سمة "الوضع" بالضبط في الحسابات المستخدمة لتحويل القيم العائمة إلى مكافئاتها الكمية.
في وضع "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 وبالتالي ، فإن قيم النطاق الأدنى والحد الأقصى هي 0.0 و 6.0. سيأخذ Dequantize على quint8 كل قيمة ، ويلقي على تعويم ، ويضرب في 6 / 255. لاحظ أنه إذا كان النوع الكمي هو 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
، فإننا لا نستخدم النطاق الكامل لنوع المخرجات ، ونختار استبعاد أقل قيمة ممكنة للتماثل (على سبيل المثال ، نطاق الإخراج هو -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
الحجج:
- النطاق: كائن النطاق
- 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 :: Output
operator::tensorflow::Output() const
وظائف ثابتة عامة
الوضع
Attrs Mode( StringPiece x )
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2020-04-20 (حسب التوقيت العالمي المتفَّق عليه)