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