TensorBuffer

TensorBuffer kelas abstrak publik
Subkelas Langsung yang Diketahui

Mewakili buffer data untuk masukan atau keluaran model.

Metode Publik

TensorBuffer statis
buatDinamis (Tipe DataTipe data)
Membuat TensorBuffer dinamis kosong dengan DataType yang ditentukan.
TensorBuffer statis
createFixedSize (bentuk int[], Tipe DataTipe data)
Membuat TensorBuffer dengan shape dan DataType tertentu.
TensorBuffer statis
createFrom (buffer TensorBuffer , Tipe Data tipe data)
Membuat TensorBuffer yang menyalin data secara mendalam dari yang lain, dengan DataType yang ditentukan.
ByteBuffer
dapatkanBuffer ()
Mengembalikan buffer data.
Tipe Data abstrak
dapatkanTipeData ()
Mengembalikan tipe data buffer ini.
ke dalam
dapatkanFlatSize ()
Mendapatkan flatSize buffer.
abstrak mengapung[]
dapatkanFloatArray ()
Mengembalikan array float dari nilai yang disimpan dalam buffer ini.
pelampung abstrak
getFloatValue (int absIndex)
Mengembalikan nilai float pada indeks tertentu.
abstrak ke dalam[]
dapatkanIntArray ()
Mengembalikan array int dari nilai yang disimpan dalam buffer ini.
abstrak ke dalam
getIntValue (int absIndex)
Mengembalikan nilai int pada indeks tertentu.
ke dalam[]
dapatkanBentuk ()
Mendapatkan bentuk saat ini.
abstrak ke dalam
dapatkanTypeSize ()
Mengembalikan jumlah byte dari satu elemen dalam array.
boolean
adalahDinamis ()
Mengembalikan jika TensorBuffer berukuran dinamis (dapat diubah ukurannya secara sewenang-wenang).
kekosongan abstrak
loadArray (int[] src, int[] bentuk)
Memuat array int ke dalam buffer ini dengan bentuk tertentu.
kekosongan abstrak
loadArray (float[] src, int[] bentuk)
Memuat array float ke dalam buffer ini dengan bentuk tertentu.
ruang kosong
loadArray (mengapung[] src)
Memuat array float ke dalam buffer ini.
ruang kosong
loadArray (int[] src)
Memuat array int ke dalam buffer ini.
ruang kosong
loadBuffer ( penyangga ByteBuffer )
Memuat buffer byte ke dalam TensorBuffer ini.
ruang kosong
loadBuffer (buffer ByteBuffer , bentuk int[])
Memuat buffer byte ke TensorBuffer ini dengan bentuk tertentu.

Metode Warisan

Metode Publik

TensorBuffer statis publik createDynamic ( Tipe Data tipe data)

Membuat TensorBuffer dinamis kosong dengan DataType yang ditentukan. Bentuk TensorBuffer yang dibuat adalah {0}.

TensorBuffers Dinamis akan mengalokasikan kembali memori saat memuat array atau buffer data dengan ukuran buffer berbeda. Berikut beberapa contohnya:

 // 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.
 

Parameter
tipe data Tipe data TensorBuffer yang akan dibuat.

TensorBuffer statis publik createFixedSize (bentuk int[], Tipe data Tipe Data)

Membuat TensorBuffer dengan shape dan DataType tertentu. Berikut beberapa contohnya:

 // 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);
 

Ukuran TensorBuffer berukuran tetap tidak dapat diubah setelah dibuat.

Parameter
membentuk Bentuk TensorBuffer yang akan dibuat.
tipe data Tipe data TensorBuffer yang akan dibuat.
Melempar
NullPointerException jika shape nol.
Pengecualian Argumen Ilegal jika shape mempunyai unsur non-positif.

TensorBuffer statis publik createFrom ( Buffer TensorBuffer , Tipe Data tipe data)

Membuat TensorBuffer yang menyalin data secara mendalam dari yang lain, dengan DataType yang ditentukan.

Parameter
penyangga sumber TensorBuffer untuk disalin.
tipe data DataType yang diharapkan dari TensorBuffer yang baru dibuat.
Melempar
NullPointerException jika buffer adalah nol.

ByteBuffer publik getBuffer ()

Mengembalikan buffer data.

Tipe Data abstrak publik getDataType ()

Mengembalikan tipe data buffer ini.

publik int getFlatSize ()

Mendapatkan flatSize buffer.

Melempar
IlegalStateException jika data yang mendasarinya rusak

abstrak publik float[] getFloatArray ()

Mengembalikan array float dari nilai yang disimpan dalam buffer ini. Jika buffer memiliki tipe berbeda dari float, nilainya akan diubah menjadi float. Misalnya, nilai di TensorBufferUint8 akan dikonversi dari uint8 menjadi float.

abstrak publik float getFloatValue (int absIndex)

Mengembalikan nilai float pada indeks tertentu. Jika buffer memiliki tipe berbeda dari float, nilainya akan diubah menjadi float. Misalnya, saat membaca nilai dari TensorBufferUint8 , nilai tersebut akan dibaca terlebih dahulu sebagai uint8, lalu akan dikonversi dari uint8 menjadi 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);
 

Parameter
absIndex Indeks absolut dari nilai yang akan dibaca.

abstrak publik int[] getIntArray ()

Mengembalikan array int dari nilai yang disimpan dalam buffer ini. Jika buffer bertipe berbeda dari int, nilainya akan diubah menjadi int, dan kehilangan presisi mungkin terjadi. Misalnya, mendapatkan array int dari TensorBufferFloat dengan nilai {400.32f, 23.04f}, outputnya adalah {400, 23}.

abstrak publik int getIntValue (int absIndex)

Mengembalikan nilai int pada indeks tertentu. Jika buffer bertipe berbeda dari int, nilainya akan diubah menjadi int. Misalnya, saat membaca nilai dari TensorBufferFloat , nilai tersebut akan dibaca terlebih dahulu sebagai float, lalu dikonversi dari float menjadi int. Hilangnya presisi mungkin terjadi.

 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.
 

Parameter
absIndex Indeks absolut dari nilai yang akan dibaca.

int publik[] getShape ()

Mendapatkan bentuk saat ini. (mengembalikan salinan di sini untuk menghindari modifikasi yang tidak terduga.)

Melempar
IlegalStateException jika data yang mendasarinya rusak

abstrak publik int getTypeSize ()

Mengembalikan jumlah byte dari satu elemen dalam array. Misalnya, buffer float akan mengembalikan 4, dan buffer byte akan mengembalikan 1.

boolean publik isDynamic ()

Mengembalikan jika TensorBuffer berukuran dinamis (dapat diubah ukurannya secara sewenang-wenang).

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

Memuat array int ke dalam buffer ini dengan bentuk tertentu. Jika buffer memiliki tipe yang berbeda dari int, nilainya akan diubah menjadi tipe buffer sebelum dimuat ke dalam buffer, dan kehilangan presisi mungkin terjadi. Misalnya, memuat array int dengan nilai {400, -23} ke dalam TensorBufferUint8 , nilai tersebut akan dijepit ke [0, 255] dan kemudian dilemparkan ke uint8 sebesar {255, 0}.

Parameter
src Array sumber yang akan dimuat.
membentuk Bentuk tensor yang diwakili src .
Melempar
NullPointerException jika src adalah nol.
NullPointerException jika shape nol.
Pengecualian Argumen Ilegal jika ukuran array yang akan dimuat tidak sesuai dengan bentuk yang ditentukan.

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

Memuat array float ke dalam buffer ini dengan bentuk tertentu. Jika buffer memiliki tipe yang berbeda dari float, nilainya akan diubah menjadi tipe buffer sebelum dimuat ke dalam buffer, dan kehilangan presisi mungkin terjadi. Misalnya, memuat array float ke TensorBufferUint8 dengan nilai {400.32f, -23.04f}, nilai tersebut akan dijepit ke [0, 255] dan kemudian dilemparkan ke uint8 sebesar {255, 0}.

Parameter
src Array sumber yang akan dimuat.
membentuk Bentuk tensor yang diwakili src .
Melempar
NullPointerException jika src adalah nol.
NullPointerException jika shape nol.
Pengecualian Argumen Ilegal jika ukuran array yang akan dimuat tidak sesuai dengan bentuk yang ditentukan.

kekosongan publik loadArray (float[] src)

Memuat array float ke dalam buffer ini. Jika buffer memiliki tipe yang berbeda dari float, nilainya akan diubah menjadi tipe buffer sebelum dimuat ke dalam buffer, dan kehilangan presisi mungkin terjadi. Misalnya, memuat array float ke TensorBufferUint8 dengan nilai {400.32f, -23.04f}, nilai tersebut akan dijepit ke [0, 255] dan kemudian dilemparkan ke uint8 sebesar {255, 0}.

Penggunaan metode ini mengasumsikan bahwa bentuk src sama dengan bentuk TensorBuffer ini. Oleh karena itu, ukuran buffer ( src.length ) harus selalu sesuai dengan ukuran datar TensorBuffer ini, baik untuk TensorBuffer berukuran tetap maupun dinamis. Gunakan loadArray(float[], int[]) jika src memiliki bentuk yang berbeda.

Parameter
src Array sumber yang akan dimuat.

kekosongan publik loadArray (int[] src)

Memuat array int ke dalam buffer ini. Jika buffer memiliki tipe yang berbeda dari int, nilainya akan diubah menjadi tipe buffer sebelum dimuat ke dalam buffer, dan kehilangan presisi mungkin terjadi. Misalnya, memuat array int dengan nilai {400, -23} ke dalam TensorBufferUint8 , nilai tersebut akan dijepit ke [0, 255] dan kemudian dilemparkan ke uint8 sebesar {255, 0}.

Penggunaan metode ini mengasumsikan bahwa bentuk src sama dengan bentuk TensorBuffer ini. Oleh karena itu, ukuran buffer ( src.length ) harus selalu sesuai dengan ukuran datar TensorBuffer ini, baik untuk TensorBuffer berukuran tetap maupun dinamis. Gunakan loadArray(int[], int[]) jika src memiliki bentuk yang berbeda.

Parameter
src Array sumber yang akan dimuat.

kekosongan publik loadBuffer (penyangga ByteBuffer )

Memuat buffer byte ke dalam TensorBuffer ini. Ukuran buffer harus sesuai dengan ukuran datar TensorBuffer ini.

Penggunaan metode ini mengasumsikan bahwa bentuk buffer sama dengan bentuk TensorBuffer ini. Oleh karena itu, ukuran buffer ( buffer.limit() ) harus selalu sesuai dengan ukuran datar TensorBuffer ini, baik untuk TensorBuffer berukuran tetap maupun dinamis. Gunakan loadBuffer(ByteBuffer, int[]) jika buffer memiliki bentuk yang berbeda.

Penting: Buffer yang dimuat adalah referensi. JANGAN DIUBAH. Kami tidak membuat salinan di sini karena alasan kinerja, namun jika diperlukan modifikasi, silakan buat salinannya.

Untuk performa terbaik, selalu muat ByteBuffer langsung atau ByteBuffer yang didukung oleh array.

Jika buffer bersifat read-only, kami mengadopsi strategi copy-on-write untuk performa.

Parameter
penyangga Buffer byte yang akan dimuat.

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

Memuat buffer byte ke TensorBuffer ini dengan bentuk tertentu.

Penting: Buffer yang dimuat adalah referensi. JANGAN DIUBAH. Kami tidak membuat salinan di sini karena alasan kinerja, namun jika diperlukan modifikasi, silakan buat salinannya.

Untuk performa terbaik, selalu muat ByteBuffer langsung atau ByteBuffer yang didukung oleh array.

Parameter
penyangga Buffer byte yang akan dimuat.
membentuk
Melempar
NullPointerException jika buffer adalah nol.
Pengecualian Argumen Ilegal jika ukuran buffer dan typeSize tidak cocok atau ukuran buffer dan flatSize tidak cocok.