زیر کلاس های مستقیم شناخته شده |
بافر داده را برای ورودی یا خروجی مدل نشان می دهد.
TensorBuffer استاتیک | |
TensorBuffer استاتیک | createFixedSize (int[] shape, DataType dataType) |
TensorBuffer استاتیک | createFrom ( بافر TensorBuffer ، DataType dataType) یک داده کپی عمیق TensorBuffer از دیگری با DataType مشخص شده ایجاد می کند. |
بایت بافر | getBuffer () بافر داده را برمی گرداند. |
نوع داده انتزاعی | getDataType () نوع داده این بافر را برمی گرداند. |
بین المللی | getFlatSize () FlatSize بافر را دریافت می کند. |
شناور انتزاعی[] | getFloatArray () یک آرایه شناور از مقادیر ذخیره شده در این بافر را برمی گرداند. |
شناور انتزاعی | getFloatValue (int absIndex) یک مقدار شناور را در یک شاخص معین برمی گرداند. |
درون انتزاعی[] | getIntArray () یک آرایه int از مقادیر ذخیره شده در این بافر را برمی گرداند. |
انتزاعی | getIntValue (int absIndex) مقدار int را در یک شاخص معین برمی گرداند. |
بین المللی[] | getShape () شکل فعلی را می گیرد. |
انتزاعی | getTypeSize () تعداد بایت های یک عنصر واحد در آرایه را برمی گرداند. |
بولی | isDynamic () اگر TensorBuffer دارای اندازه پویا باشد، برمیگردد (میتواند خودسرانه اندازه را تغییر دهد). |
خلأ انتزاعی | loadArray (int[] src، int[] شکل) یک آرایه int را با شکل خاصی در این بافر بارگذاری می کند. |
خلأ انتزاعی | loadArray (شکل شناور[] src، int[]) یک آرایه شناور را با شکل خاصی در این بافر بارگذاری می کند. |
خالی | loadArray (float[] src) یک آرایه شناور را در این بافر بارگذاری می کند. |
خالی | loadArray (int[] src) یک آرایه int را در این بافر بارگذاری می کند. |
خالی | |
خالی | loadBuffer (بافر ByteBuffer ، شکل int[]) یک بافر بایت را با شکل خاصی در این TensorBuffer بارگذاری می کند. |
یک 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.
نوع داده | نوع داده TensorBuffer که باید ایجاد شود. |
---|
یک 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 که باید ایجاد شود. |
---|---|
نوع داده | نوع داده TensorBuffer که باید ایجاد شود. |
NullPointerException | اگر shape پوچ باشد |
---|---|
IllegalArgumentException | اگر shape دارای عناصر غیر مثبت باشد. |
یک داده کپی عمیق TensorBuffer
از دیگری با DataType
مشخص شده ایجاد می کند.
بافر | منبع TensorBuffer برای کپی کردن از. |
---|---|
نوع داده | DataType مورد انتظار TensorBuffer تازه ایجاد شده. |
NullPointerException | اگر buffer تهی باشد |
---|
بافر داده را برمی گرداند.
نوع داده این بافر را برمی گرداند.
FlatSize بافر را دریافت می کند.
IllegalStateException | اگر داده های اساسی خراب باشد |
---|
یک آرایه شناور از مقادیر ذخیره شده در این بافر را برمی گرداند. اگر بافر انواع متفاوتی از float داشته باشد، مقادیر به float تبدیل می شوند. به عنوان مثال، مقادیر در TensorBufferUint8
از uint8 به float تبدیل می شوند.
یک مقدار شناور را در یک شاخص معین برمی گرداند. اگر بافر از انواع مختلف با 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 از مقادیر ذخیره شده در این بافر را برمی گرداند. اگر نوع بافر متفاوت از int باشد، مقادیر به int تبدیل میشوند و ممکن است از دست دادن دقت اعمال شود. به عنوان مثال، گرفتن یک آرایه int از یک TensorBufferFloat
با مقادیر {400.32f، 23.04f}، خروجی {400، 23} است.
مقدار 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 | شاخص مطلق مقداری که باید خوانده شود. |
---|
شکل فعلی را می گیرد. (برای جلوگیری از تغییرات غیرمنتظره، یک کپی را به اینجا برگردانید.)
IllegalStateException | اگر داده های اساسی خراب باشد |
---|
تعداد بایت های یک عنصر واحد در آرایه را برمی گرداند. به عنوان مثال، یک بافر شناور 4 و یک بافر بایت 1 را برمی گرداند.
اگر TensorBuffer
دارای اندازه پویا باشد، برمیگردد (میتواند خودسرانه اندازه را تغییر دهد).
یک آرایه int را با شکل خاصی در این بافر بارگذاری می کند. اگر بافر انواع مختلفی از int داشته باشد، مقادیر قبل از بارگیری در بافر به نوع بافر تبدیل می شوند و ممکن است دقت از دست برود. برای مثال، با بارگذاری یک آرایه int با مقادیر {400، -23} در یک TensorBufferUint8
، مقادیر به [0، 255] بسته میشوند و سپس توسط {255، 0} به uint8 فرستاده میشوند.
src | آرایه منبعی که باید بارگیری شود. |
---|---|
شکل | شکل تانسوری که src نشان می دهد. |
NullPointerException | اگر src تهی باشد. |
---|---|
NullPointerException | اگر shape پوچ باشد |
IllegalArgumentException | اگر اندازه آرایه ای که باید بارگذاری شود با شکل مشخص شده مطابقت نداشته باشد. |
یک آرایه شناور را با شکل خاصی در این بافر بارگذاری می کند. اگر بافر از انواع متفاوتی نسبت به شناور باشد، مقادیر قبل از بارگیری در بافر به نوع بافر تبدیل میشوند و ممکن است دقت از دست برود. به عنوان مثال، با بارگذاری یک آرایه شناور در یک TensorBufferUint8
با مقادیر {400.32f، -23.04f}، مقادیر به [0، 255] متصل می شوند و سپس توسط {255، 0} به uint8 فرستاده می شوند.
src | آرایه منبعی که باید بارگیری شود. |
---|---|
شکل | شکل تانسوری که src نشان می دهد. |
NullPointerException | اگر src تهی باشد. |
---|---|
NullPointerException | اگر shape پوچ باشد |
IllegalArgumentException | اگر اندازه آرایه ای که باید بارگذاری شود با شکل مشخص شده مطابقت نداشته باشد. |
یک آرایه شناور را در این بافر بارگذاری می کند. اگر بافر از انواع متفاوتی نسبت به شناور باشد، مقادیر قبل از بارگیری در بافر به نوع بافر تبدیل میشوند و ممکن است دقت از دست برود. به عنوان مثال، با بارگذاری یک آرایه شناور در یک TensorBufferUint8
با مقادیر {400.32f، -23.04f}، مقادیر به [0، 255] متصل می شوند و سپس توسط {255، 0} به uint8 فرستاده می شوند.
با استفاده از این روش فرض می شود که شکل src
با شکل این TensorBuffer
یکسان است. بنابراین اندازه buffer
( src.length
) باید همیشه با اندازه مسطح این TensorBuffer
هم برای TensorBuffer با اندازه ثابت و هم برای TensorBuffer
پویا مطابقت داشته باشد. اگر src
شکل دیگری دارد از loadArray(float[], int[])
استفاده کنید.
src | آرایه منبعی که باید بارگیری شود. |
---|
یک آرایه int را در این بافر بارگذاری می کند. اگر بافر انواع مختلفی از int داشته باشد، مقادیر قبل از بارگیری در بافر به نوع بافر تبدیل می شوند و ممکن است دقت از دست برود. برای مثال، با بارگذاری یک آرایه int با مقادیر {400، -23} در یک TensorBufferUint8
، مقادیر به [0، 255] بسته میشوند و سپس توسط {255، 0} به uint8 فرستاده میشوند.
با استفاده از این روش فرض می شود که شکل src
با شکل این TensorBuffer
یکسان است. بنابراین اندازه buffer
( src.length
) باید همیشه با اندازه مسطح این TensorBuffer
هم برای TensorBuffer با اندازه ثابت و هم برای TensorBuffer
پویا مطابقت داشته باشد. اگر src
شکل متفاوتی دارد از loadArray(int[], int[])
استفاده کنید.
src | آرایه منبعی که باید بارگیری شود. |
---|
یک بافر بایت را در این TensorBuffer
بارگیری می کند. اندازه بافر باید با اندازه مسطح این TensorBuffer
مطابقت داشته باشد.
با استفاده از این روش فرض می شود که شکل buffer
با شکل این TensorBuffer
یکسان است. بنابراین اندازه buffer
( buffer.limit()
) باید همیشه با اندازه مسطح این TensorBuffer
هم برای TensorBuffer با اندازه ثابت و هم برای TensorBuffer
پویا مطابقت داشته باشد. اگر buffer
شکل دیگری دارد از loadBuffer(ByteBuffer, int[])
استفاده کنید.
مهم: بافر بارگذاری شده یک مرجع است. اصلاح نکنید. ما در اینجا یک کپی برای نگرانی عملکرد ایجاد نمی کنیم، اما اگر اصلاح لازم است، لطفاً یک کپی تهیه کنید.
برای بهترین عملکرد، همیشه یک ByteBuffer
مستقیم یا یک ByteBuffer
که توسط یک آرایه پشتیبانی می شود بارگیری کنید.
اگر buffer
فقط خواندنی باشد، یک استراتژی کپی روی نوشتن برای عملکرد اتخاذ می کنیم.
بافر | بافر بایت برای بارگیری |
---|
یک بافر بایت را با شکل خاصی در این TensorBuffer
بارگذاری می کند.
مهم: بافر بارگذاری شده یک مرجع است. اصلاح نکنید. ما در اینجا یک کپی برای نگرانی عملکرد ایجاد نمی کنیم، اما اگر اصلاح لازم است، لطفاً یک کپی تهیه کنید.
برای بهترین عملکرد، همیشه یک ByteBuffer
مستقیم یا یک ByteBuffer
که توسط یک آرایه پشتیبانی می شود بارگیری کنید.
بافر | بافر بایت برای بارگیری |
---|---|
شکل |
NullPointerException | اگر buffer تهی باشد |
---|---|
IllegalArgumentException | اگر اندازه buffer و typeSize مطابقت ندارند یا اندازه buffer و flatSize مطابقت ندارند. |