مؤتمر Google I / O هو التفاف! تابع جلسات TensorFlow اعرض الجلسات

تينسورفلو :: العمليات :: QuantizeAndDequantizeV2

#include <array_ops.h>

يكمي ثم يزيل التنسور.

ملخص

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

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

هناك طرق مختلفة للقياس. يستخدم هذا الإصدار القياس فقط ، لذا فإن 0.0 تعيين إلى 0.

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

على سبيل المثال

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

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

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

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

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

على سبيل المثال

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

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

الإخراج = الجولة (المشبك (القيمة ، المدخلات_دقيقة ، المدخلات_الحد الأقصى) * مقياس_المعامل) / scale_factor.

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

الحجج:

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

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

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

وظائف ثابتة عامة

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 :: Output

 operator::tensorflow::Output() const 

وظائف ثابتة عامة

نطاق ضيق

Attrs NarrowRange(
  bool x
)

نومبيتس

Attrs NumBits(
  int64 x
)

المدى

Attrs RangeGiven(
  bool x
)

RoundMode

Attrs RoundMode(
  StringPiece x
)

التوقيع

Attrs SignedInput(
  bool x
)