TensorBuffer

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

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

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

סטטי TensorBuffer
createDynamic(dataType של DataType)
הפונקציה יוצרת TensorBuffer דינמי ריק עם הערך DataType שצוין.
סטטי TensorBuffer
createFixedSize(ה צורה [int[], סוג הנתונים DataType)
יצירת TensorBuffer עם הערכים shape ו-DataType שצוינו.
סטטי TensorBuffer
createFrom(מאגר נתונים זמני של TensorBuffer, סוג נתונים של DataType)
יצירת TensorBuffer להעתקה עמוקה של נתונים ממקור אחר, עם הערך DataType שצוין.
ByteBuffer
getBuffer()
מחזירה את מאגר הנתונים.
מופשט DataType
getDataType()
מחזירה את סוג הנתונים של מאגר הנתונים הזמני.
int
getFlatSize()
הפונקציה מקבלת את הגודל ה-flaSize של המאגר.
מופשט float[]
getFloatArray()
מחזירה מערך צף של הערכים שמאוחסנים במאגר הנתונים הזמני.
מופשט מספר ממשי (float)
getFloatValue(int ABIndex)
מחזירה ערך מסוג מספר ממשי (float) באינדקס נתון.
מופשט int[]
getIntArray()
מחזירה מערך int של הערכים שמאוחסנים במאגר הנתונים הזמני.
מופשט INT
getIntValue(int ABIndex)
מחזירה ערך int באינדקס נתון.
int[]
getShape()
מקבלת את הצורה הנוכחית.
מופשט INT
getTypeSize()
הפונקציה מחזירה את מספר הבייטים של רכיב יחיד במערך.
בוליאני
isDynamic()
הפונקציה מחזירה אם TensorBuffer הוא בגודל דינמי (יכול להיות לשנות את הגודל באופן שרירותי).
מופשט ריק
loadArray(int[] src, int[] shape)
טוענת מערך int למאגר הנתונים הזמני עם צורה ספציפית.
מופשט ריק
loadArray(float[] src, int[] צורה)
טוענת מערך צף לתוך מאגר הנתונים הזמני עם צורה ספציפית.
ריק
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[] 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.

ציבורי ByteBuffer getBuffer ()

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

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

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

ציבורי INT getFlatSize ()

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

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

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

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

ציבורי מופשט מספר ממשי (float) getFloatValue (int ABIndex)

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

 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, הערכים יומרו ל-in, וכתוצאה מכך עלול להיווצר אובדן דיוק. לדוגמה, קבלת מערך int מ-TensorBufferFloat עם הערכים {400.32f, 23.04f}, הפלט הוא {400, 23}.

ציבורי מופשט INT getIntValue (int ABIndex)

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

ציבורי int[] getShape ()

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

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

ציבורי מופשט INT getTypeSize ()

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

ציבורי בוליאני isDynamic ()

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

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

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

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

ציבורי מופשט ריק loadArray (float[] src, צורה[])

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

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

ציבורי ריק 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 מערך המקור שייטען.

ציבורי ריק 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 מערך המקור שייטען.

ציבורי ריק loadBuffer (ByteBuffer חוצץ)

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

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

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

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

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

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

ציבורי ריק loadBuffer (ByteBuffer חוצץ, צורה[] int)

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

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

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

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