TensorBuffer

מחלקה מופשטת ציבורית TensorBuffer
מחלקות משנה ידועות של ישיר

מייצג את מאגר הנתונים של הקלט או הפלט של המודל.

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

סטטי TensorBuffer
createDynamic(DataType dataType)
הפונקציה יוצרת TensorBuffer דינמי ריק עם הערך DataType שצוין.
סטטי TensorBuffer
createFixedSize(int[] shape, DataType dataType)
הפונקציה יוצרת TensorBuffer עם הערכים shape ו-DataType שצוינו.
סטטי TensorBuffer
createFrom(מאגר TensorBuffer, DataType dataType)
הפונקציה יוצרת TensorBuffer להעתקת עומק של נתונים ממקור אחר, עם הערך DataType שצוין.
ByteBuffer
getBuffer()
מחזירה את מאגר הנתונים הזמני.
מופשט DataType
getDataType()
מחזירה את סוג הנתונים של מאגר הנתונים הזמני.
int
getFlatSize()
הפונקציה מקבלת את הגודל FlatSize של המאגר.
מופשט צף[]
getFloatArray()
מחזירה מערך צף של הערכים ששמורים במאגר הנתונים הזמני.
מופשט מספר ממשי (float)
getFloatValue(int bIndex)
מחזירה ערך צף באינדקס נתון.
מופשט int[]
getIntArray()
מחזירה מערך int של הערכים ששמורים במאגר הנתונים הזמני.
מופשט int
getIntValue(int bIndex)
מחזירה ערך int באינדקס נתון.
int[]
getShape()
הפונקציה מקבלת את הצורה הנוכחית.
מופשט int
getTypeSize()
מחזירה את מספר הבייטים של רכיב יחיד במערך.
boolean
isDynamic()
הפונקציה מחזירה את הערך אם TensorBuffer הוא גודל דינמי (ניתן לשנות את הגודל באופן שרירותי).
מופשט בטל
loadArray(int[] src, int[] shape)
טוען מערך int למאגר הנתונים הזמני הזה עם צורה ספציפית.
מופשט בטל
loadArray(float[] src, int[])
טוען מערך צף למאגר זה בעל צורה ספציפית.
void
loadArray(float[] src)
טוען מערך צף למאגר זה.
void
loadArray(int[] src)
טוען מערך int למאגר הזה.
void
loadBuffer(מאגר מאגר ByteBuffer)
טוען מאגר נתונים זמני של בייט לתוך TensorBuffer.
void
loadBuffer(מאגר ByteBuffer, צורה int[])
טוען מאגר נתונים זמני של בייטים ב-TensorBuffer בצורה ספציפית.

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

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

ציבורי סטטי TensorBuffer createDynamic (DataType dataType)

הפונקציה יוצרת TensorBuffer דינמי ריק עם הערך DataType שצוין. הצורה של TensorBuffer שנוצר היא {0}.

Dynamic TensorBuffers יקצה מחדש זיכרון כשטוענים מערכים או מאגרי נתונים בגדלים שונים של מאגרי נתונים זמניים. הנה כמה דוגמאות:

 // Creating a float dynamic TensorBuffer:
 TensorBuffer tensorBuffer = TensorBuffer.createDynamic(DataType.FLOAT32);
 // Loading a float array:
 float[] arr1 = new float[] {1, 2, 3};
 tensorBuffer.loadArray(arr, new int[] {arr1.length});
 // loading another float array:
 float[] arr2 = new float[] {1, 2, 3, 4, 5};
 tensorBuffer.loadArray(arr, new int[] {arr2.length});
 // loading a third float array with the same size as arr2, assuming shape doesn't change:
 float[] arr3 = new float[] {5, 4, 3, 2, 1};
 tensorBuffer.loadArray(arr);
 // loading a forth float array with different size as arr3 and omitting the shape will result
 // in error:
 float[] arr4 = new float[] {3, 2, 1};
 tensorBuffer.loadArray(arr); // Error: The size of byte buffer and the shape do not match.
 

פרמטרים
dataType סוג הנתונים של TensorBuffer שיש ליצור.

ציבורי סטטי TensorBuffer createFixedSize (int[] shape, DataType dataType)

הפונקציה יוצרת TensorBuffer עם הערכים shape ו-DataType שצוינו. הנה כמה דוגמאות:

 // Creating a float TensorBuffer with shape {2, 3}:
 int[] shape = new int[] {2, 3};
 TensorBuffer tensorBuffer = TensorBuffer.createFixedSize(shape, DataType.FLOAT32);
 
 // Creating an uint8 TensorBuffer of a scalar:
 int[] shape = new int[] {};
 TensorBuffer tensorBuffer = TensorBuffer.createFixedSize(shape, DataType.UINT8);
 
 // Creating an empty uint8 TensorBuffer:
 int[] shape = new int[] {0};
 TensorBuffer tensorBuffer = TensorBuffer.createFixedSize(shape, DataType.UINT8);
 

לא ניתן לשנות גודל של TensorBuffer בגודל קבוע לאחר היצירה שלו.

פרמטרים
צורה הצורה של TensorBuffer שיש ליצור.
dataType סוג הנתונים של TensorBuffer שיש ליצור.
קליעות
NullPointerException אם shape הוא null.
IllegalArgumentException אם ב-shape יש אלמנטים לא חיוביים.

ציבורי סטטי TensorBuffer createFrom (TensorBuffer מאגר נתונים זמני, DataType dataType)

הפונקציה יוצרת TensorBuffer להעתקת עומק של נתונים ממקור אחר, עם הערך DataType שצוין.

פרמטרים
buffer המקור TensorBuffer שממנו רוצים להעתיק.
dataType הערך הצפוי של DataType של TensorBuffer שנוצר לאחרונה.
קליעות
NullPointerException אם buffer הוא null.

Public ByteBuffer getBuffer ()

מחזירה את מאגר הנתונים הזמני.

ציבורי מופשט DataType getDataType ()

מחזירה את סוג הנתונים של מאגר הנתונים הזמני.

public int getFlatSize ()

הפונקציה מקבלת את הגודל FlatSize של המאגר.

קליעות
IllegalStateException אם נתוני הבסיס פגומים

ציבורי מופשט צף[] getFloatArray ()

מחזירה מערך צף של הערכים ששמורים במאגר הנתונים הזמני. אם מאגר הנתונים הזמני הוא סוגים שונים מאלה של צף, הערכים יומרו לצוף. לדוגמה, הערכים ב-TensorBufferUint8 יומרו מ-uint8 ל-float.

Public מופשט צף getFloatValue (int bIndex)

מחזירה ערך צף באינדקס נתון. אם המאגר הזמני הוא סוגים שונים מאלה של צף, הערך יומר לצף. לדוגמה, בקריאת ערך מ-TensorBufferUint8, הערך יוקרא קודם כ-uint8 ואז יומר מ-uint8 ל-float.

 For example, a TensorBuffer with shape {2, 3} that represents the following array,
 [[0.0f, 1.0f, 2.0f], [3.0f, 4.0f, 5.0f]].

 The fourth element (whose value is 3.0f) in the TensorBuffer can be retrieved by:
 float v = tensorBuffer.getFloatValue(3);
 

פרמטרים
absIndex האינדקס המוחלט של הערך שיש לקרוא.

ציבורי מופשט int[] getIntArray ()

מחזירה מערך int של הערכים ששמורים במאגר הנתונים הזמני. אם סוג המאגר הזמני הוא מסוג int, הערכים יומרו ל-int וכתוצאה מכך ייתכן אובדן הדיוק. לדוגמה, אם מקבלים מערך int מ-TensorBufferFloat עם הערכים {400.32f, 23.04f}, הפלט הוא {400, 23}.

Public מופשט int getIntValue (int bIndex)

מחזירה ערך int באינדקס נתון. אם מאגר הנתונים הזמני הוא מסוג int, הערך יומר למטבע int. לדוגמה, בקריאת ערך מהטבלה TensorBufferFloat, הערך יוקרא קודם כעמודה צפה ולאחר מכן יומר מערך של מספר ממשי (float) למספר שלם. ייתכן שיחול אובדן דיוק.

 For example, a TensorBuffer with shape {2, 3} that represents the following array,
 [[0.0f, 1.0f, 2.0f], [3.0f, 4.0f, 5.0f]].

 The fourth element (whose value is 3.0f) in the TensorBuffer can be retrieved by:
 int v = tensorBuffer.getIntValue(3);
 Note that v is converted from 3.0f to 3 as a result of type conversion.
 

פרמטרים
absIndex האינדקס המוחלט של הערך שיש לקרוא.

Public int[] getShape ()

הפונקציה מקבלת את הצורה הנוכחית. (החזרת עותק כאן כדי למנוע שינוי בלתי צפוי.)

קליעות
IllegalStateException אם נתוני הבסיס פגומים

Public מופשט int getTypeSize ()

מחזירה את מספר הבייטים של רכיב יחיד במערך. לדוגמה, מאגר של מאגר צף יחזיר ערך של 4, ומאגר נתונים זמני של בייטים יחזיר ערך של 1.

Public בוליאנית isDynamic ()

הפונקציה מחזירה את הערך אם TensorBuffer הוא גודל דינמי (ניתן לשנות את הגודל באופן שרירותי).

ציבורי מופשט void loadArray (int[] src, int[] shape)

טוען מערך int למאגר הנתונים הזמני הזה עם צורה ספציפית. אם המאגר הוא מסוגים שונים מאלה של int, הערכים יומרו לסוג של המאגר לפני הטעינה שלו, ויכול להיות שיחול אובדן דיוק. לדוגמה, אם תטען מערך int עם הערכים {400, -23} בתוך TensorBufferUint8 , הערכים יוגבלו ל-[0, 255] ואז יועברו ל-uint8 עד {255, 0}.

פרמטרים
src מערך המקור לטעינה.
צורה צורת Tensor ש-src מייצג.
קליעות
NullPointerException אם src הוא null.
NullPointerException אם shape הוא null.
IllegalArgumentException אם גודל המערך שייטען לא תואם לצורה שצוינה.

ציבורי מופשט void loadArray (float[] src, int[] shape)

טוען מערך צף למאגר זה בעל צורה ספציפית. אם מאגר הנתונים הזמני הוא מסוגים שונים מאשר לצוף, הערכים יומרו לסוג של מאגר הנתונים הזמני לפני שהם ייטענו למאגר, וייתכן שיחול אובדן דיוק. לדוגמה, כשטוענים מערך צף בתוך TensorBufferUint8 עם הערכים {400.32f, -23.04f}, הערכים יוגבלו ל-[0, 255] ואז יועברו ל-uint8 ב-{255, 0}.

פרמטרים
src מערך המקור לטעינה.
צורה צורת Tensor ש-src מייצג.
קליעות
NullPointerException אם src הוא null.
NullPointerException אם shape הוא null.
IllegalArgumentException אם גודל המערך שייטען לא תואם לצורה שצוינה.

Public void loadArray (float[] src)

טוען מערך צף למאגר זה. אם מאגר הנתונים הזמני הוא סוגים שונים מאלה של מאגר נתונים זמני, הערכים יומרו לסוג של מאגר הנתונים הזמני לפני שהם ייטענו למאגר, וייתכן שיחול אובדן דיוק. לדוגמה, אם תטען מערך צף לתוך TensorBufferUint8 עם הערכים {400.32f, -23.04f}, הערכים יוגבלו ל-[0, 255] ואז יועברו ל-uint8 על ידי {255, 0}.

השימוש בשיטה הזו מבוסס על ההנחה שהצורה של src זהה לצורה של TensorBuffer. לכן הגודל של buffer (src.length) צריך תמיד להתאים לגודל השטוח של TensorBuffer הזה, גם עבור גודל קבוע וגם עבור TensorBuffer דינמי. יש להשתמש במאפיין loadArray(float[], int[]) אם לsrc יש צורה שונה.

פרמטרים
src מערך המקור לטעינה.

Public void loadArray (int[] src)

טוען מערך int למאגר הזה. אם המאגר הוא מסוגים שונים מאלה של int, הערכים יומרו לסוג של מאגר הנתונים הזמני לפני הטעינה שלהם וכתוצאה מכך ייתכן אובדן הדיוק. לדוגמה, אם תטען מערך int עם הערכים {400, -23} בתוך TensorBufferUint8 , הערכים יוגבלו ל-[0, 255] ואז יועברו ל-uint8 על ידי {255, 0}.

השימוש בשיטה הזו מבוסס על ההנחה שהצורה של src זהה לצורה של TensorBuffer. לכן הגודל של buffer (src.length) צריך תמיד להתאים לגודל השטוח של TensorBuffer הזה, גם עבור גודל קבוע וגם עבור TensorBuffer דינמי. יש להשתמש במאפיין loadArray(int[], int[]) אם לsrc יש צורה שונה.

פרמטרים
src מערך המקור לטעינה.

public void loadBuffer (ByteBuffer מאגר נתונים זמני)

טוען מאגר נתונים זמני של בייט לתוך TensorBuffer. גודל מאגר הנתונים הזמני חייב להתאים לגודל השטוח של TensorBuffer הזה.

השימוש בשיטה הזו מבוסס על ההנחה שהצורה של buffer זהה לצורה של TensorBuffer. לכן הגודל של buffer (buffer.limit()) צריך תמיד להתאים לגודל השטוח של TensorBuffer הזה, גם עבור גודל קבוע וגם עבור TensorBuffer דינמי. יש להשתמש בפונקציה loadBuffer(ByteBuffer, int[]) אם ל-buffer יש צורה שונה.

חשוב: מאגר הנתונים הזמני שנטען הוא קובץ עזר. אין לשנות. אנחנו לא יוצרים כאן עותק בגלל בעיית ביצועים, אבל אם יש צורך בשינוי, כדאי ליצור עותק.

כדי להשיג את הביצועים הטובים ביותר, צריך תמיד לטעון שדה ByteBuffer ישיר או ByteBuffer שמגובה במערך.

אם השדה buffer הוא לקריאה בלבד, אנחנו נוקטים אסטרטגיה של 'העתקה וכתיבה' לביצועים.

פרמטרים
buffer מאגר הנתונים הזמני של הבייטים לטעינה.

Public void loadBuffer (מאגר מאגר ByteBuffer, צורה int[]

טוען מאגר נתונים זמני של בייטים ב-TensorBuffer בצורה ספציפית.

חשוב: מאגר הנתונים הזמני שנטען הוא קובץ עזר. אין לשנות. אנחנו לא יוצרים כאן עותק בגלל בעיית ביצועים, אבל אם יש צורך בשינוי, כדאי ליצור עותק.

כדי להשיג את הביצועים הטובים ביותר, צריך תמיד לטעון שדה ByteBuffer ישיר או ByteBuffer שמגובה במערך.

פרמטרים
buffer מאגר הנתונים הזמני של הבייטים לטעינה.
צורה
קליעות
NullPointerException אם buffer הוא null.
IllegalArgumentException אם הגודל של buffer ושל typeSize לא תואם, או שהגודל של buffer ו-flatSize לא תואם.