TensorLabel הוא wrapper במסגרת TensorBuffers עם תוויות משמעותיות על ציר.
לדוגמה, מודל סיווג של תמונות עשוי להיות טינזור של פלט עם הצורה {1, 10},
1 מציין את גודל הקבוצה ו-10 מייצג את מספר הקטגוריות. למעשה, בציר השני יכולנו
מוסיפים תווית לכל תת-משתנה בשם או בתיאור של כל קטגוריה מתאימה. TensorLabel יכול לעזור בהמרה של Tensor פשוט בTensorBuffer למפה
תוויות מוגדרות מראש לקיזורי משנה. במקרה הזה, אם תספקו 10 תוויות לציר השני, TensorLabel יוכל להמיר את {1, 10} Tensor המקורי למפת רכיבים של 10, שכל ערך שלו
is 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();
הערה: בשלב זה אנחנו תומכים בהמרה מסוג tensor למיפוי עבור התווית הראשונה בגודל גדול יותר מ-1.
בנייה ציבורית
|
TensorLabel(מפה<Integer, List<String>> שינוי תוויות, TensorBuffer tensorBuffer)
יוצרת אובייקט TensorLabel שיכול להוסיף תוויות לצירים של TensorLabel.
|
|
|
TensorLabel(רשימה<String> sectionLabels, TensorBuffer tensorBuffer)
יוצרת אובייקט TensorLabel שיכול להוסיף תווית על ציר אחד של טנסורים רב-ממדיים.
|
שיטות ציבוריות
| רשימה<קטגוריה> |
getCategoryList()
מקבלת רשימה של
Category מהאובייקט TensorLabel. |
| מפה<String, Float> |
getMapWithFloatValue()
מקבל מפה שממפה תווית לצף.
|
| מפה<String, TensorBuffer> |
getMapWithTensorBuffer()
מקבלת את המפה עם צמד של התווית וה-TensorBuffer התואם.
|
שיטות שעברו בירושה
בנייה ציבורית
ציבורי TensorLabel (מפה<מספר שלם, רשימה<מחרוזת>> ציר זמן, TensorBuffer tensorBuffer)
יוצרת אובייקט TensorLabel שיכול להוסיף תוויות לצירים של TensorLabel.
פרמטרים
| axisLabels | מפה שהמפתח שלה הוא מזהה ציר (שמתחיל ב-0) והערך שלה תואמים תוויות. הערה: הגודל של התוויות צריך להיות זהה לגודל של הטנזור בציר הזה. |
|---|---|
| tensorBuffer | את TensorBuffer שצריך לתייג. |
קליעות
| NullPointerException | אם הערך של axisLabels או של tensorBuffer הוא null, או ערך כלשהו
הערך ב-axisLabels הוא null. |
|---|---|
| IllegalArgumentException | אם מפתח כלשהו ב-axisLabels נמצא מחוץ לטווח (בהשוואה
בצורה של tensorBuffer, או לכל ערך (תוויות) יש גודל שונה עם tensorBuffer במימד הנתון.
|
ציבורי TensorLabel (רשימה<מחרוזת> תוויות של צירים, TensorBuffer tensorBuffer)
יוצרת אובייקט TensorLabel שיכול להוסיף תווית על ציר אחד של טנסורים רב-ממדיים.
הערה: התוויות מוחלות על הציר הראשון שהגודל שלו גדול מ-1. לדוגמה, אם
הצורה של הטנזור היא [1, 10, 3], התוויות יוחלו על ציר 1 (המזהה מתחיל מ-
0), וגם הגודל של axisLabels צריך להיות 10.
פרמטרים
| axisLabels | רשימה של תוויות שהגודל שלהן צריך להיות זהה לגודל של הטנזור לציר שרוצים לתייג. |
|---|---|
| tensorBuffer | את TensorBuffer שצריך לתייג. |
שיטות ציבוריות
ציבורי רשימה<קטגוריה> getCategoryList ()
מקבלת רשימה של Category מהאובייקט TensorLabel.
ציר התווית צריך להיות הציר האחרון (כלומר כל
שצוין על ידי הציר הזה צריך להיות בגודל שטוח של 1), כך שכל משנה משנה מתויג
הומר לציון ערך של מספר ממשי (float). דוגמה: TensorLabel עם הצורה {2, 5, 3}
וציר 2 תקין. אם הציר הוא 1 או 0, אי אפשר להמיר אותו ל-Category.
getMapWithFloatValue() היא חלופה, אבל מחזירה Map כ-
את התוצאה.
קליעות
| IllegalStateException | אם הגודל של תת-משתנה בכל תווית הוא לא 1. |
|---|
ציבורי מפה<מחרוזת, צפה> getMapWithFloatValue ()
מקבל מפה שממפה תווית לצף. אפשר מיפוי רק בציר הראשון בגודל גדול יותר מ-1, והציר צריך להיות הציר האחרון (כלומר כל שצוין על ידי הציר הזה צריך להיות בגודל שטוח של 1).
getCategoryList() הוא API חלופי לקבלת התוצאה.
קליעות
| IllegalStateException | אם הגודל של תת-משתנה בכל תווית הוא לא 1. |
|---|
ציבורי מפה<String, TensorBuffer> getMapWithTensorBuffer ()
מקבלת את המפה עם צמד של תווית וה-TensorBuffer התואם. מתירים רק על הציר הראשון, בגודל גדול מ-1 כרגע.