tensorflow:: ops:: QuantizeV2
#include <array_ops.h>לכמת את טנזור ה'קלט' מסוג float לטנזור 'פלט' מסוג 'T'.
תַקצִיר
ה-[min_range, max_range] הם מספרים סקלריים מצופים המציינים את הטווח עבור נתוני ה-'קלט'. התכונה 'mode' שולטת בדיוק באילו חישובים ישמשו להמרת ערכי הציפה למספרים הכמותיים המקבילים שלהם. התכונה 'round_mode' שולטת באיזה אלגוריתם עיגול ושובר שוויון ישמש בעת עיגול ערכי ציפה למספרים הכמותיים המקבילים שלהם.
במצב 'MIN_COMBINED', כל ערך של הטנזור יעבור את הפעולות הבאות:
out[i] = (in[i] - min_range) * range(T) / (max_range - min_range) if T == qint8: out[i] -= (range(T) + 1) / 2.0
כאן range(T) = numeric_limits
דוגמה למצב MIN_COMBINED
נניח שהקלט הוא מסוג float ובעל טווח אפשרי של [0.0, 6.0] וסוג הפלט הוא quint8 ([0, 255]). יש לציין את ערכי ה-min_range וה-max_range כ-0.0 ו-6.0. כימות מ-float ל-quint8 יכפיל כל ערך של הקלט ב-255/6 ויהפוך אותו ל-quint8.
אם סוג הפלט היה qint8 ([-128, 127]), הפעולה תחסיר בנוסף כל ערך ב-128 לפני התוצאה, כך שטווח הערכים יתיישר עם טווח qint8.
אם המצב הוא '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 = num_discrete_values / range quantized = round(input * range_scale) - round(range_min * range_scale) + numeric_limits::min() quantized = max(quantized, numeric_limits ::min()) quantized = min(quantized, numeric_limits ::max())
ההבדל הגדול ביותר בין זה לבין MIN_COMBINED הוא שטווח המינימום מעוגל תחילה, לפני שהוא מופחת מהערך המעוגל. עם MIN_COMBINED, נוצרת הטיה קטנה שבה איטרציות חוזרות ונשנות של כימות ודה-כימות יביאו לשגיאה גדולה יותר ויותר.
דוגמה למצב SCALED
מצב 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 = (max_fixed - min_fixed) / (2 * m)
כעת נוכל לכמת את איברי הטנזור שלנו:
result = round(input * s)
דבר אחד שיש לשים לב אליו הוא שהמפעיל עשוי לבחור להתאים מעט את ערכי המינימום והמקסימום המבוקשים במהלך תהליך הכימות, לכן עליך תמיד להשתמש ביציאות הפלט כטווח לחישובים נוספים. לדוגמה, אם ערכי המינימום והמקסימום המבוקשים קרובים לשווים, הם יופרדו על ידי ערך אפסילון קטן כדי למנוע יצירת מאגרים כמותיים לא תקינים. אחרת, אתה עלול לקבל מאגרים שבהם כל הערכים הכמותיים ממופים לאותו ערך צף, מה שגורם לבעיות עבור פעולות שצריכות לבצע עליהם חישובים נוספים.
טיעונים:
- היקף: אובייקט היקף
- min_range: ערך הסקלר המינימלי שניתן להפיק עבור הקלט.
- max_range: הערך הסקלרי המקסימלי שניתן להפיק עבור הקלט.
החזרות:
- פלט
Output: הנתונים הכמותיים המופקים מהקלט הצף. -
Outputoutput_min: ערך הסקלר המינימלי בפועל המשמש עבור הפלט. -
Outputoutput_max: ערך הסקלר המקסימלי בפועל המשמש עבור הפלט.
בנאים והורסים | |
|---|---|
QuantizeV2 (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input min_range, :: tensorflow::Input max_range, DataType T) | |
QuantizeV2 (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input min_range, :: tensorflow::Input max_range, DataType T, const QuantizeV2::Attrs & attrs) |
מאפיינים ציבוריים | |
|---|---|
operation | |
output | |
output_max | |
output_min | |
פונקציות סטטיות ציבוריות | |
|---|---|
Mode (StringPiece x) | |
RoundMode (StringPiece x) | |
מבנים | |
|---|---|
| tensorflow:: ops:: QuantizeV2:: Attrs | קובעי מאפיינים אופציונליים עבור QuantizeV2 . |
מאפיינים ציבוריים
מִבצָע
Operation operation
תְפוּקָה
::tensorflow::Output output
פלט_מקסימלי
::tensorflow::Output output_max
פלט_דקה
::tensorflow::Output output_min
תפקידים ציבוריים
קוונטיזציה V2
QuantizeV2( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input min_range, ::tensorflow::Input max_range, DataType T )
קוונטיזציה V2
QuantizeV2( const ::tensorflow::Scope & scope, ::tensorflow::Input input, ::tensorflow::Input min_range, ::tensorflow::Input max_range, DataType T, const QuantizeV2::Attrs & attrs )
פונקציות סטטיות ציבוריות
מצב
Attrs Mode( StringPiece x )
מצב עגול
Attrs RoundMode( StringPiece x )
אלא אם צוין אחרת, התוכן של דף זה הוא ברישיון Creative Commons Attribution 4.0 ודוגמאות הקוד הן ברישיון Apache 2.0. לפרטים, ניתן לעיין במדיניות האתר Google Developers. Java הוא סימן מסחרי רשום של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2026-11-05 (שעון UTC).