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