تدفق التوتر:: العمليات:: تخلص من الكمية
#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()
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. وبالتالي فإن قيمتي min_range وmax_range هي 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::الإخراج
operator::tensorflow::Output() const
وظائف ثابتة العامة
وضع
Attrs Mode( StringPiece x )
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2024-11-18 (حسب التوقيت العالمي المتفَّق عليه)