TensorLabel

מחלקה ציבורית TensorLabel

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(מפה<IntegerList<String>> Labels, TensorBuffer tensorBuffer)
יוצר אובייקט TensorLabel שיכול להוסיף תוויות על הצירים של tensors רב-ממדיים.
TensorLabel(List<String> piLabels, TensorBuffer tensorBuffer)
יוצר אובייקט TensorLabel שיכול להוסיף תוויות בציר אחד של tensors רב-ממדיים.

שיטות ציבוריות

List<Category>
getCategoryList()
מקבלת רשימה של Category מהאובייקט TensorLabel.
Map<StringFloat>
getMapWithFloatValue()
קבלת מפה שממפה תווית כדי לצוף.
Map<StringTensorBuffer>
getMapWithTensorBuffer()
מקבל את המפה עם זוג לייבל ועם TensorBuffer תואם.

שיטות שעברו בירושה

בנאים ציבוריים

public TensorLabel (מפה<IntegerList<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.