tensorflow:: אופס:: QuantizeAndDequantizeV2

#include <array_ops.h>

מכונס ואז מבטל טנזור.

סיכום

פעולה זו מדמה את אובדן הדיוק מהמעבר המדויק קדימה:

  1. כימות הטנזור למספרי נקודות קבועות, שאמורות להתאים לשיטת כימת היעד כאשר היא משמשת בהסקת מסקנות.
  2. נטרול אותו בחזרה למספרי נקודה צפה עבור הפעולות הבאות, ככל הנראה matmul.

ישנן דרכים שונות לכימות. גרסה זו משתמשת רק בקנה מידה, אז 0.0 ממפה ל-0.

מתוך ה-'num_bits' שצוינו בסוג הפלט המכומתי, הוא קובע ערכים קוונטיים מינימליים ומקסימליים שניתנים לייצוג.

לְמָשָׁל

  • [-128, 127] עבור חתום, num_bits = 8, או
  • [0, 255] עבור unsigned, num_bits = 8.

אם range_given == False, ה-input_min ההתחלתי, input_max ייקבע אוטומטית כערכים המינימליים והמקסימליים בטנזור הקלט, אחרת נעשה שימוש בערכים שצוינו של input_min, input_max.

הערה: אם מצוינים ה-input_min, input_max, הם אינם צריכים להיות שווים לערכי המינימום והמקסימום בפועל בטנזור. למשל במקרים מסוימים, זה עשוי להיות מועיל לציין ערכים אלה כך שהקצוות ההסתברותיים הנמוכים של התפלגות הקלט ייחתכו.

אופציה זו קובעת את scale_factor המקסימלי שימפה את טווח ה-[input_min, input_max] הראשוני לטווח שנמצא בטווח הקוונטי שניתן לייצוג.

הוא קובע את קנה המידה מאחד של input_min ו-input_max, ולאחר מכן מעדכן את השני כדי למקסם את הטווח הניתן לייצוג.

לְמָשָׁל

  • אם הפלט חתום, num_bits = 8, [input_min, input_max] = [-10.0, 5.0]: הוא ישתמש ב-scale_factor של -128 / -10.0 = 12.8 במקרה זה, הוא יעדכן את input_max להיות 127 / 12.8 = 9.921875
  • אם הפלט חתום, num_bits = 8, [input_min, input_max] = [-10.0, 10.0]: הוא ישתמש ב-scale_factor של 127 / 10.0 = 12.7 במקרה זה, הוא יעדכן את input_min להיות 128.0 / 12.7 = -740.
  • אם הפלט אינו חתום, input_min נאלץ להיות 0, ורק ה-input_max שצוין משמש.

לאחר קביעת scale_factor ועדכון טווח הקלט, הוא מחיל את הדברים הבאים על כל ערך בטנזור 'קלט'.

פלט = round(clamp(value, input_min, input_max) * scale_factor) / scale_factor.

פונקציית הסיבוב לעיל מעגלת את הערך על סמך מצב הסיבוב הנתון.

טיעונים:

  • scope: אובייקט Scope
  • קלט: טנסור לכימות ולאחר מכן לנטרל.
  • input_min: אם range_given == True , זה מציין את ערך הקלט המינימלי שצריך להיות מיוצג, אחרת הוא נקבע מהערך המינימלי של טנזור input .
  • input_max: אם range_given == True , זה מציין את ערך הקלט המקסימלי שצריך להיות מיוצג, אחרת הוא נקבע מהערך המקסימלי של טנזור input .

מאפיינים אופציונליים (ראה Attrs ):

  • signed_input: האם הכימות חתום או לא חתום. (למעשה פרמטר זה היה צריך להיקרא signed_output )
  • num_bits: רוחב הסיביות של הקוונטיזציה.
  • range_given: האם הטווח נתון או צריך להיקבע מטנסור input .
  • round_mode: התכונה 'round_mode' שולטת באיזה אלגוריתם שובר שוויון עיגול נעשה שימוש בעת עיגול ערכי צף למקבילותיהם הכומתיים. מצבי העיגול הבאים נתמכים כעת:
  • HALF_TO_EVEN: זהו ברירת המחדל של round_mode.
  • HALF_UP: סיבוב לכיוון חיובי. במצב זה 7.5 סיבובים עד 8 ו-7.5 סיבובים עד -7.
  • narrow_range: אם True, אז הערך המוחלט של ערך המינימום המכומתי זהה לערך המקסימלי המכומתי, במקום 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

 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::פלט

 operator::tensorflow::Output() const 

פונקציות סטטיות ציבוריות

צִיר

Attrs Axis(
  int64 x
)

טווח צר

Attrs NarrowRange(
  bool x
)

NumBits

Attrs NumBits(
  int64 x
)

RangeGiven

Attrs RangeGiven(
  bool x
)

RoundMode

Attrs RoundMode(
  StringPiece x
)

קלט חתום

Attrs SignedInput(
  bool x
)