TensorLabel הוא מעטפת שימוש עבור TensorBuffers עם תוויות משמעותיות על ציר.
לדוגמה, למודל סיווג תמונה עשוי להיות טנזור פלט עם צורה כמו {1, 10}, כאשר 1 הוא גודל האצווה ו-10 הוא מספר הקטגוריות. למעשה, בציר השני, נוכל לתייג כל תת-טנזור עם השם או התיאור של כל קטגוריה מתאימה. TensorLabel
יכול לעזור בהמרת Tensor הפשוט ב- TensorBuffer
למפה מתוויות מוגדרות מראש לתת-טנסורים. במקרה זה, אם יסופקו 10 תוויות עבור הציר השני, TensorLabel
יכול להמיר את הטנסור המקורי {1, 10} למפה של 10 אלמנטים, שכל ערך שלה הוא Tensor בצורה {} (סקלרית). דוגמה לשימוש:
TensorBuffer outputTensor = ...; List<String> labels = FileUtil.loadLabels(context, labelFilePath); // labels the first axis with size greater than one TensorLabel labeled = new TensorLabel(labels, outputTensor); // If each sub-tensor has effectively size 1, we can directly get a float value Map<String, Float> probabilities = labeled.getMapWithFloatValue(); // Or get sub-tensors, when each sub-tensor has elements more than 1 Map<String, TensorBuffer> subTensors = labeled.getMapWithTensorBuffer();
הערה: נכון לעכשיו, אנו תומכים רק בהמרת טנזור למפה עבור התווית הראשונה עם גודל גדול מ-1.
בונים ציבוריים
TensorLabel ( מפה < מספר שלם , רשימה < מחרוזת >> axisLabels, TensorBuffer tensorBuffer) יוצר אובייקט TensorLabel המסוגל לתייג על צירים של טנסורים רב מימדיים. | |
TensorLabel ( רשימה < String > axisLabels, TensorBuffer tensorBuffer) יוצר אובייקט TensorLabel המסוגל לתייג על ציר אחד של טנסורים רב מימדיים. |
שיטות ציבוריות
רשימה < קטגוריה > | getCategoryList () מקבל רשימה של Category מהאובייקט TensorLabel . |
מפה < מחרוזת , ציפה > | getMapWithFloatValue () מקבל מפה שממפה את התווית לצוף. |
מפה < String , TensorBuffer > | getMapWithTensorBuffer () מקבל את המפה עם זוג של התווית וה-TensorBuffer המתאים. |
שיטות בירושה
בונים ציבוריים
TensorLabel ציבורי ( מפה < מספר שלם , רשימה < מחרוזת >> axisLabels, TensorBuffer tensorBuffer)
יוצר אובייקט TensorLabel המסוגל לתייג על צירים של טנסורים רב מימדיים.
פרמטרים
ציר תוויות | מפה, שהמפתח שלה הוא מזהה ציר (החל מ-0) והערך הוא תוויות מתאימות. הערה: גודל התוויות צריך להיות זהה לגודל הטנזור בציר זה. |
---|---|
tensorBuffer | ה-TensorBuffer שיתויג. |
זורק
NullPointerException | אם axisLabels או tensorBuffer הם null, או כל ערך ב- axisLabels הוא null. |
---|---|
חריג טיעון לא חוקי | אם מפתח כלשהו ב- axisLabels נמצא מחוץ לטווח (בהשוואה לצורת tensorBuffer , או לכל ערך (תוויות) יש גודל שונה עם tensorBuffer בממד הנתון. |
TensorLabel ציבורי ( רשימה < String > axisLabels, TensorBuffer tensorBuffer)
יוצר אובייקט TensorLabel המסוגל לתייג על ציר אחד של טנסורים רב מימדיים.
הערה: התוויות מיושמות על הציר הראשון שגודלו גדול מ-1. לדוגמה, אם צורת הטנזור היא [1, 10, 3], התוויות יוחלו על ציר 1 (מזהה החל מ-0), והגודל של axisLabels
צריך להיות גם 10.
פרמטרים
ציר תוויות | רשימה של תוויות, שגודלן צריך להיות זהה לגודל הטנזור על הציר שיש לתייג. |
---|---|
tensorBuffer | ה-TensorBuffer שיתויג. |
שיטות ציבוריות
רשימה ציבורית < קטגוריה > getCategoryList ()
מקבל רשימה של Category
מהאובייקט TensorLabel
.
ציר התווית צריך להיות למעשה הציר האחרון (מה שאומר שלכל תת-טנזור שצוין על-ידי ציר זה צריך להיות גודל שטוח של 1), כך שכל תת-טנסור מסומן יכול להיות מומר לציון ערך צף. דוגמה: TensorLabel
עם צורה {2, 5, 3}
וציר 2 חוקי. אם הציר הוא 1 או 0, לא ניתן להמיר אותו Category
.
getMapWithFloatValue()
היא חלופה אך מחזירה Map
כתוצאה מכך.
זורק
חריגה של מדינה בלתי חוקית | אם הגודל של תת-טנזור בכל תווית אינו 1. |
---|
מפה ציבורית < String , Float > getMapWithFloatValue ()
מקבל מפה שממפה את התווית לצוף. אפשר רק את המיפוי על הציר הראשון עם גודל גדול מ-1, והציר צריך להיות למעשה הציר האחרון (מה שאומר שכל תת-טנזור שצוין על ידי ציר זה צריך להיות בגודל שטוח של 1).
getCategoryList()
הוא API חלופי להשגת התוצאה.
זורק
חריגה של מדינה בלתי חוקית | אם הגודל של תת-טנזור בכל תווית אינו 1. |
---|
מפה ציבורית < String , TensorBuffer > getMapWithTensorBuffer ()
מקבל את המפה עם זוג של התווית וה-TensorBuffer המתאים. אפשר את המיפוי רק בציר הראשון עם גודל גדול מ-1 כרגע.