TensorBuffer

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

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

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

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

שיטות בירושה

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

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

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

דינמי 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[], 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 היא אפסית.
חריג טיעון לא חוקי אם shape יש אלמנטים לא חיוביים.

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

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

פרמטרים
בַּלָם המקור TensorBuffer להעתיק ממנו.
סוג מידע ה- DataType הצפוי של TensorBuffer החדש שנוצר.
זורק
NullPointerException אם buffer הוא ריק.

Public ByteBuffer getBuffer ()

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

תקציר ציבורי DataType getDataType ()

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

public int getFlatSize ()

מקבל את ה-flatSize של המאגר.

זורק
חריגה של מדינה בלתי חוקית אם הנתונים הבסיסיים פגומים

public abstract float[] getFloatArray ()

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

תקציר ציבורי צף getFloatValue (int absIndex)

מחזירה ערך צף באינדקס נתון. אם המאגר הוא מסוגים שונים מ-float, הערך יומר ל-float. לדוגמה, בעת קריאת ערך מ- 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}.

תקציר ציבורי int getIntValue (int absIndex)

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

 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 ()

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

זורק
חריגה של מדינה בלתי חוקית אם הנתונים הבסיסיים פגומים

תקציר ציבורי int getTypeSize ()

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

בוליאני ציבורי הוא דינמי ()

מחזירה אם ה- TensorBuffer הוא בגודל דינמי (יכול לשנות את הגודל באופן שרירותי).

public abstract void loadArray (int[] src, int[] shape)

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

פרמטרים
src מערך המקור שיש לטעון.
צוּרָה צורת הטנזור ש- src מייצג.
זורק
NullPointerException אם src הוא null.
NullPointerException אם shape היא אפסית.
חריג טיעון לא חוקי אם גודל המערך לטעינה אינו תואם לצורה שצוינה.

public abstract void loadArray (float[] src, int[] shape)

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

פרמטרים
src מערך המקור שיש לטעון.
צוּרָה צורת הטנזור ש- src מייצג.
זורק
NullPointerException אם src הוא null.
NullPointerException אם shape היא אפסית.
חריג טיעון לא חוקי אם גודל המערך לטעינה אינו תואם לצורה שצוינה.

public void loadArray (float[] src)

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

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

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

public void loadBuffer (buffer ByteBuffer )

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

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

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

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

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

פרמטרים
בַּלָם מאגר הבתים לטעינה.

public void loadBuffer ( ByteBuffer buffer, int[] shape)

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

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

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

פרמטרים
בַּלָם מאגר הבתים לטעינה.
צוּרָה
זורק
NullPointerException אם buffer הוא ריק.
חריג טיעון לא חוקי אם הגודל של buffer ו- typeSize אינם תואמים או שהגודל של buffer ו- flatSize אינם תואמים.