tensorflow:: ops:: דה-קוונטיזציה
#include <array_ops.h>דה-קוונטיזציה של טנזור ה'קלט' לטנזור צף.
תַקצִיר
[min_range, max_range] הם ערכים מצופים סקלריים המציינים את הטווח עבור נתוני ה-'קלט'. התכונה 'mode' שולטת בדיוק באילו חישובים נעשה שימוש כדי להמיר את ערכי הציפה לערכי ה-'levels' הכמותיים שלהם.
במצב '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() דוגמה למצב MIN_COMBINED
אם הקלט מגיע מ- QuantizedRelu6 , סוג הפלט הוא quint8 (טווח של 0-255) אך הטווח האפשרי של QuantizedRelu6 הוא 0-6. לכן, ערכי ה-min_range וה-max_range הם 0.0 ו-6.0. פעולת Dequantize ב-quint8 תיקח כל ערך, תעביר אותו ל-float ותכפיל אותו ב-6 / 255. שים לב שאם quantizedtype הוא qint8, הפעולה תחבר בנוסף כל ערך ב-128 לפני ה-cast.
אם המצב הוא '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
מצב 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:: ביטול קוונטיזציה:: 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 ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2026-11-05 (שעון UTC).