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