TensorBuffer

class abstrak publik TensorBuffer
Subclass Langsung yang Diketahui

Menampilkan buffer data untuk input model atau outputnya.

Metode Publik

statis TensorBuffer
createDynamic(dataType DataType)
Membuat TensorBuffer dinamis kosong dengan DataType yang ditentukan.
statis TensorBuffer
createFixedSize(int[] shape, dataType DataType)
Membuat TensorBuffer dengan shape dan DataType yang ditentukan.
statis TensorBuffer
createFrom(buffer TensorBuffer, dataType DataType)
Membuat data yang disalin secara mendalam TensorBuffer dari data lain, dengan DataType yang ditentukan.
ByteBuffer
getBuffer()
Menampilkan buffer data.
abstrak DataType
getDataType()
Menampilkan jenis data buffer ini.
int
getFlatSize()
Mendapatkan flatSize buffer.
abstrak float[]
getFloatArray()
Menampilkan array float dari nilai yang tersimpan di buffer ini.
float abstrak
getFloatValue(int absIndex)
Menampilkan nilai float pada indeks yang diberikan.
abstrak int[]
getIntArray()
Menampilkan array int dari nilai yang tersimpan dalam buffer ini.
abstrak int
getIntValue(int absIndex)
Menampilkan nilai int pada indeks tertentu.
int[]
getShape()
Mendapatkan bentuk saat ini.
abstrak int
getTypeSize()
Menampilkan jumlah byte dari satu elemen dalam array.
boolean
isDynamic()
Menampilkan jika TensorBuffer memiliki ukuran dinamis (dapat diubah ukurannya secara arbitrer).
abstrak void
loadArray(int[] src, int[] shape)
Memuat array int ke dalam buffer ini dengan bentuk tertentu.
abstrak void
loadArray(float[] src, int[] shape)
Memuat array float ke dalam buffer ini dengan bentuk tertentu.
void
loadArray(float[] src)
Memuat array float ke dalam buffer ini.
void
loadArray(int[] src)
Memuat array int ke buffer ini.
void
loadBuffer(buffer ByteBuffer)
Memuat buffering byte ke dalam TensorBuffer ini.
void
loadBuffer(buffer ByteBuffer, bentuk int[])
Memuat buffering byte ke dalam TensorBuffer ini dengan bentuk tertentu.

Metode Turunan

Metode Publik

publik statis TensorBuffer createDynamic (DataType dataType)

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

Dynamic TensorBuffers akan mengalokasikan ulang memori saat memuat array atau buffer data dari berbagai ukuran buffer. 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
dataType dataType TensorBuffer yang akan dibuat.

publik statis TensorBuffer createFixedSize (int[] shape, DataType dataType)

Membuat TensorBuffer dengan shape dan DataType yang ditentukan. 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 ukuran tetap tidak dapat diubah setelah dibuat.

Parameter
bentuk Bentuk TensorBuffer yang akan dibuat.
dataType dataType TensorBuffer yang akan dibuat.
Menampilkan
NullPointerException jika shape adalah null.
IllegalArgumentException jika shape memiliki elemen non-positif.

publik statis TensorBuffer createFrom (buffer TensorBuffer, DataType dataType)

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

Parameter
buffer TensorBuffer sumber untuk menyalin.
dataType DataType yang diharapkan dari TensorBuffer yang baru dibuat.
Menampilkan
NullPointerException jika buffer adalah null.

publik ByteBuffer getBuffer ()

Menampilkan buffer data.

public abstract DataType getDataType ()

Menampilkan jenis data buffer ini.

public int getFlatSize ()

Mendapatkan flatSize buffer.

Menampilkan
IllegalStateException jika data yang mendasarinya rusak

public abstrak float[] getFloatArray ()

Menampilkan array float dari nilai yang tersimpan di buffer ini. Jika buffer memiliki jenis yang berbeda dengan float, nilainya akan dikonversi menjadi float. Misalnya, nilai dalam TensorBufferUint8 akan dikonversi dari uint8 menjadi float.

public abstrak float getFloatValue (int absIndex)

Menampilkan nilai float pada indeks yang diberikan. Jika buffer memiliki jenis yang berbeda dengan float, nilai akan dikonversi 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.

public abstract int[] getIntArray ()

Menampilkan array int dari nilai yang tersimpan dalam buffer ini. Jika buffer memiliki jenis yang berbeda dengan int, nilai tersebut akan dikonversi menjadi int, dan kerugian presisi mungkin berlaku. Misalnya, mendapatkan array int dari TensorBufferFloat dengan nilai {400.32f, 23.04f}, output-nya adalah {400, 23}.

public abstract int getIntValue (int absIndex)

Menampilkan nilai int pada indeks tertentu. Jika buffer memiliki jenis yang berbeda dengan int, nilai tersebut akan dikonversi menjadi int. Misalnya, saat membaca nilai dari TensorBufferFloat, nilai tersebut akan dibaca terlebih dahulu sebagai float, lalu akan dikonversi dari float ke int. Kerugian presisi mungkin berlaku.

 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.

public int[] getShape ()

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

Menampilkan
IllegalStateException jika data yang mendasarinya rusak

public abstrak int getTypeSize ()

Menampilkan jumlah byte dari satu elemen dalam array. Misalnya, buffer float akan menampilkan 4, dan buffering byte akan menampilkan 1.

publik boolean isDynamic ()

Menampilkan jika TensorBuffer memiliki ukuran dinamis (dapat diubah ukurannya secara arbitrer).

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

Memuat array int ke dalam buffer ini dengan bentuk tertentu. Jika buffer memiliki jenis yang berbeda dengan int, nilai tersebut akan dikonversi menjadi jenis buffer sebelum dimuat ke dalam buffer, dan kemungkinan kehilangan presisi. Misalnya, memuat array int dengan nilai {400, -23} ke TensorBufferUint8 , nilainya akan dibulatkan ke [0, 255] lalu di-cast ke uint8 oleh {255, 0}.

Parameter
src Array sumber yang akan dimuat.
bentuk Bentuk tensor yang diwakili src.
Menampilkan
NullPointerException jika src adalah null.
NullPointerException jika shape adalah null.
IllegalArgumentException jika ukuran array yang akan dimuat tidak sesuai dengan bentuk yang ditentukan.

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

Memuat array float ke dalam buffer ini dengan bentuk tertentu. Jika buffer memiliki jenis yang berbeda dengan float, nilai tersebut akan dikonversi menjadi jenis buffer sebelum dimuat ke dalam buffer, dan kemungkinan kehilangan presisi. Misalnya, memuat array float ke dalam TensorBufferUint8 dengan nilai {400.32f, -23.04f}, nilai tersebut akan dibulatkan ke [0, 255], lalu dimasukkan ke uint8 oleh {255, 0}.

Parameter
src Array sumber yang akan dimuat.
bentuk Bentuk tensor yang diwakili src.
Menampilkan
NullPointerException jika src adalah null.
NullPointerException jika shape adalah null.
IllegalArgumentException jika ukuran array yang akan dimuat tidak sesuai dengan bentuk yang ditentukan.

public void loadArray (float[] src)

Memuat array float ke dalam buffer ini. Jika buffer memiliki jenis yang berbeda dengan float, nilai tersebut akan dikonversi menjadi jenis buffer sebelum dimuat ke dalam buffer, dan dapat terjadi kehilangan presisi. Misalnya, memuat array float ke dalam TensorBufferUint8 dengan nilai {400.32f, -23.04f}, nilai tersebut akan dibatasi ke [0, 255], lalu dikonversi ke uint8 oleh {255, 0}.

Penggunaan metode ini mengasumsikan bahwa bentuk src sama dengan bentuk TensorBuffer ini. Dengan demikian, ukuran buffer (src.length) harus selalu cocok dengan ukuran tetap TensorBuffer ini, untuk TensorBuffer ukuran tetap dan dinamis. Gunakan loadArray(float[], int[]) jika src memiliki bentuk yang berbeda.

Parameter
src Array sumber yang akan dimuat.

public void loadArray (int[] src)

Memuat array int ke buffer ini. Jika buffer memiliki jenis yang berbeda dengan int, nilai tersebut akan dikonversi menjadi jenis buffer sebelum dimuat ke dalam buffer, dan kemungkinan dapat terjadi kehilangan presisi. Misalnya, memuat array int dengan nilai {400, -23} ke TensorBufferUint8 , nilainya akan dibatasi ke [0, 255] lalu dikonversi ke uint8 oleh {255, 0}.

Penggunaan metode ini mengasumsikan bahwa bentuk src sama dengan bentuk TensorBuffer ini. Dengan demikian, ukuran buffer (src.length) harus selalu cocok dengan ukuran tetap TensorBuffer ini, untuk TensorBuffer ukuran tetap dan dinamis. Gunakan loadArray(int[], int[]) jika src memiliki bentuk yang berbeda.

Parameter
src Array sumber yang akan dimuat.

public void loadBuffer (buffer ByteBuffer)

Memuat buffering byte ke dalam TensorBuffer ini. Ukuran buffer harus cocok dengan ukuran tetap TensorBuffer ini.

Penggunaan metode ini mengasumsikan bahwa bentuk buffer sama dengan bentuk TensorBuffer ini. Dengan demikian, ukuran buffer (buffer.limit()) harus selalu cocok dengan ukuran tetap TensorBuffer ini, baik untuk TensorBuffer ukuran tetap maupun dinamis. Gunakan loadBuffer(ByteBuffer, int[]) jika buffer memiliki bentuk yang berbeda.

Penting: Buffering yang dimuat adalah referensi. JANGAN MENGUBAH. Kami tidak membuat salinan di sini karena masalah performa, tetapi jika perlu modifikasi, harap buat salinannya.

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

Jika buffer bersifat hanya baca, kami akan menerapkan strategi salin-saat-menulis untuk performa.

Parameter
buffer Buffering byte yang akan dimuat.

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

Memuat buffering byte ke dalam TensorBuffer ini dengan bentuk tertentu.

Penting: Buffering yang dimuat adalah referensi. JANGAN MENGUBAH. Kami tidak membuat salinan di sini karena masalah performa, tetapi jika perlu modifikasi, harap buat salinannya.

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

Parameter
buffer Buffering byte yang akan dimuat.
bentuk
Menampilkan
NullPointerException jika buffer adalah null.
IllegalArgumentException jika ukuran buffer dan typeSize tidak cocok atau ukuran buffer dan flatSize tidak cocok.