tensorflow:: ops:: QuantizeAndDequantizeV2

#include <array_ops.h>

يقوم بتكميم ثم إزالة تكميم الموتر.

ملخص

تحاكي هذه العملية فقدان الدقة الناتج عن عملية التمرير الأمامي الكمي بواسطة:

  1. تحويل الموتر إلى أرقام ذات نقطة ثابتة، والتي يجب أن تتطابق مع طريقة التكميم المستهدفة عند استخدامها في الاستدلال.
  2. إعادة تحويلها إلى أرقام الفاصلة العائمة للعمليات التالية، على الأرجح ضرب المصفوفات.

توجد طرق مختلفة للقياس الكمي. هذه النسخة تستخدم القياس فقط، لذا فإن 0.0 يُقابل 0.

انطلاقاً من قيمة 'num_bits' المحددة في نوع الإخراج الكمي، فإنه يحدد الحد الأدنى والحد الأقصى للقيم الكمية القابلة للتمثيل.

مثال

  • [-128, 127] للأعداد الموقعة، عدد البتات = 8، أو
  • [0, 255] للأعداد غير الموقعة، عدد البتات = 8.

إذا كانت قيمة range_given تساوي False، فسيتم تحديد قيم input_min و input_max الأولية تلقائيًا كقيم دنيا وقصوى في موتر الإدخال، وإلا فسيتم استخدام القيم المحددة لـ input_min و input_max.

ملاحظة: إذا تم تحديد قيمتي input_min و input_max، فلا يشترط أن تساويا القيمتين الدنيا والقصوى الفعليتين في الموتر. على سبيل المثال، في بعض الحالات، قد يكون من المفيد تحديد هاتين القيمتين بحيث يتم استبعاد القيم المتطرفة ذات الاحتمالية المنخفضة لتوزيع المدخلات.

تحدد هذه العملية الحد الأقصى لعامل المقياس الذي من شأنه أن يحول النطاق الأولي [input_min, input_max] إلى نطاق يقع ضمن النطاق الكمي القابل للتمثيل.

يحدد المقياس من أحد المدخلات الدنيا والمدخلات القصوى، ثم يقوم بتحديث الآخر لزيادة النطاق القابل للتمثيل إلى أقصى حد.

مثال

  • إذا كانت المخرجات ذات إشارة، وعدد البتات = 8، و[الحد الأدنى للإدخال، الحد الأقصى للإدخال] = [-10.0، 5.0]: فسيتم استخدام عامل قياس يساوي -128 / -10.0 = 12.8. في هذه الحالة، سيتم تحديث قيمة الحد الأقصى للإدخال لتصبح 127 / 12.8 = 9.921875.
  • إذا كانت المخرجات ذات إشارة، وعدد البتات = 8، و[الحد الأدنى للإدخال، الحد الأقصى للإدخال] = [-10.0، 10.0]: فسيتم استخدام عامل قياس يساوي 127 / 10.0 = 12.7. في هذه الحالة، سيتم تحديث قيمة الحد الأدنى للإدخال لتصبح 128.0 / 12.7 = -10.07874
  • إذا كان الناتج غير موقع، فسيتم فرض أن يكون input_min هو 0، وسيتم استخدام input_max المحدد فقط.

بعد تحديد عامل المقياس وتحديث نطاق الإدخال، يتم تطبيق ما يلي على كل قيمة في موتر "الإدخال".

الناتج = تقريب(تثبيت(القيمة، الحد الأدنى للإدخال، الحد الأقصى للإدخال) * عامل المقياس) / عامل المقياس.

تقوم دالة التقريب المذكورة أعلاه بتقريب القيمة بناءً على وضع التقريب المحدد.

الحجج:

  • النطاق: كائن النطاق
  • المدخلات: موتر لتكميمه ثم فك تكميمه.
  • input_min: إذا كانت range_given == True ، فإن هذا يحدد الحد الأدنى لقيمة الإدخال التي يجب تمثيلها، وإلا يتم تحديدها من الحد الأدنى لقيمة موتر input .
  • input_max: إذا كانت range_given == True ، فإن هذا يحدد الحد الأقصى لقيمة الإدخال التي يجب تمثيلها، وإلا يتم تحديدها من القيمة القصوى لموتر input .

السمات الاختيارية (انظر Attrs ):

  • signed_input: ما إذا كانت عملية التكميم مُوقّعة أم غير مُوقّعة. (في الواقع، كان ينبغي تسمية هذا المعامل signed_output ).
  • num_bits: عرض البتات للتكميم.
  • range_given: ما إذا كان النطاق معطى أم يجب تحديده من موتر input .
  • نمط_التقريب: تتحكم خاصية "نمط_التقريب" في خوارزمية التقريب المستخدمة لكسر التعادل عند تقريب القيم العشرية إلى ما يعادلها من قيم كمية. أنماط التقريب التالية مدعومة حاليًا:
  • HALF_TO_EVEN: هذا هو وضع التقريب الافتراضي.
  • نصف لأعلى: التقريب نحو الأعلى. في هذا الوضع، يتم تقريب 7.5 إلى 8، ويتم تقريب -7.5 إلى -7.
  • narrow_range: إذا كانت القيمة صحيحة، فإن القيمة المطلقة للحد الأدنى الكمي تساوي الحد الأقصى الكمي، بدلاً من أن تكون أكبر منه بمقدار 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

الدوال الثابتة العامة

Axis (int64 x)
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(
  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
)

العقدة

::tensorflow::Node * node() const 

operator::tensorflow::Input

 operator::tensorflow::Input() const 

operator::tensorflow::Output

 operator::tensorflow::Output() const 

الدوال الثابتة العامة

محور

Attrs Axis(
  int64 x
)

نطاق ضيق

Attrs NarrowRange(
  bool x
)

NumBits

Attrs NumBits(
  int64 x
)

المدى المعطى

Attrs RangeGiven(
  bool x
)

وضع الجولة

Attrs RoundMode(
  StringPiece x
)

المدخلات الموقعة

Attrs SignedInput(
  bool x
)