TensorBuffer

class abstrak publik TensorBuffer
Subclass Langsung yang Dikenal

Menyatakan buffer data untuk input model atau output-nya.

Metode Publik

statis TensorBuffer
createDynamic(DataType DataType)
Membuat TensorBuffer dinamis kosong dengan DataType yang ditentukan.
statis TensorBuffer
createFixedSize(int[] bentuk, jenis data DataType)
Membuat TensorBuffer dengan shape dan DataType yang ditentukan.
statis TensorBuffer
createFrom(buffer TensorBuffer, dataType DataType)
Membuat TensorBuffer yang menyalin data secara mendalam 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 disimpan dalam buffer ini.
abstrak mengambang
getFloatValue(int absIndex)
Menampilkan nilai float pada indeks yang diberikan.
abstrak int[]
getIntArray()
Menampilkan array int dari nilai yang disimpan dalam buffer ini.
abstrak Int
getIntValue(int absIndex)
Menampilkan nilai int pada indeks yang diberikan.
int[]
getShape()
Mendapatkan bentuk saat ini.
abstrak Int
getTypeSize()
Menampilkan jumlah byte dari satu elemen di array.
boolean
isDynamic()
Menampilkan jika TensorBuffer berukuran dinamis (dapat mengubah ukuran secara bebas).
abstrak kosong
loadArray(int[] src, int[] shape)
Memuat array int ke dalam buffer ini dengan bentuk tertentu.
abstrak kosong
loadArray(float[] src, int[] bentuk)
Memuat array float ke dalam buffer ini dengan bentuk tertentu.
void
loadArray(float[] src)
Memuat array float ke buffer ini.
void
loadArray(int[] src)
Memuat array int ke buffer ini.
void
loadBuffer(buffer ByteBuffer)
Memuat buffer byte ke TensorBuffer ini.
void
loadBuffer(buffer ByteBuffer, bentuk int[])
Memuat buffer byte ke TensorBuffer ini dengan bentuk tertentu.

Metode Turunan

Metode Publik

publik statis TensorBuffer createDynamic (DataType dataType)

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

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

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

Membuat TensorBuffer dengan shape dan DataType yang ditentukan. Berikut beberapa contoh:

 // 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 yang berukuran tetap tidak dapat diubah setelah dibuat.

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

publik statis TensorBuffer createFrom (TensorBuffer buffer, DataType dataType)

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

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

publik ByteBuffer getBuffer ()

Menampilkan buffer data.

publik abstrak DataType getDataType ()

Menampilkan jenis data buffer ini.

publik Int getFlatSize ()

Mendapatkan flatSize buffer.

Menampilkan
IllegalStateException jika data pokok rusak

publik abstrak float[] getFloatArray ()

Menampilkan array float dari nilai yang disimpan dalam buffer ini. Jika buffer memiliki jenis berbeda dari {i>float<i}, nilai akan dikonversi menjadi {i>float<i}. Misalnya, nilai dalam TensorBufferUint8 akan dikonversi dari uint8 menjadi float.

publik abstrak mengambang getFloatValue (int absIndex)

Menampilkan nilai float pada indeks yang diberikan. Jika {i>buffer<i} memiliki jenis yang berbeda dari float, akan dikonversi menjadi {i>float<i}. Misalnya, saat membaca nilai dari TensorBufferUint8, nilai tersebut akan dibacakan terlebih dahulu sebagai uint8, lalu akan dikonversi dari uint8 agar mengambang (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.

publik abstrak int[] getIntArray ()

Menampilkan array int dari nilai yang disimpan dalam buffer ini. Jika buffer memiliki jenis yang berbeda dari int, nilainya akan dikonversi menjadi int, dan kemungkinan kehilangan presisi. Misalnya, mendapatkan array int dari TensorBufferFloat dengan nilai {400.32f, 23.04f}, output adalah {400, 23}.

publik abstrak Int getIntValue (int absIndex)

Menampilkan nilai int pada indeks yang diberikan. Jika buffer memiliki jenis yang berbeda dari int, akan dikonversi menjadi int. Misalnya, saat membaca nilai dari TensorBufferFloat, nilai akan dibacakan terlebih dahulu sebagai {i>float<i}, dan kemudian akan dikonversi dari {i>float<i} ke {i>int<i}. Turun 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.

publik int[] getShape ()

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

Menampilkan
IllegalStateException jika data pokok rusak

publik abstrak Int getTypeSize ()

Menampilkan jumlah byte dari satu elemen di array. Misalnya, {i> float buffer <i}akan hasil 4, dan buffer byte akan mengembalikan 1.

publik boolean isDynamic ()

Menampilkan jika TensorBuffer berukuran dinamis (dapat mengubah ukuran secara bebas).

publik abstrak kosong loadArray (int[] src, int[] shape)

Memuat array int ke dalam buffer ini dengan bentuk tertentu. Jika buffer memiliki jenis berbeda dari int, nilai akan dikonversi ke dalam tipe {i>buffer<i} sebelum dimuat ke dalam buffer, dan kehilangan presisi mungkin terjadi. Misalnya, memuat array int dengan nilai {400, -23} menjadi TensorBufferUint8 , nilai akan dibulatkan ke [0, 255] lalu menjadi dilemparkan 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 himpunan (array) yang akan dimuat tidak sesuai dengan bentuk tertentu.

publik abstrak kosong loadArray (float[] src, int[] bentuk)

Memuat array float ke dalam buffer ini dengan bentuk tertentu. Jika buffer memiliki jenis berbeda dari {i>float<i}, nilai akan dikonversi ke dalam tipe {i>buffer<i} sebelum dimuat ke dalam buffer, dan kehilangan presisi mungkin terjadi. Misalnya, memuat array float ke dalam TensorBufferUint8 dengan nilai {400.32f, -23.04f}, nilai tersebut akan dibulatkan ke [0, 255] dan kemudian dilemparkan 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 himpunan (array) yang akan dimuat tidak sesuai dengan bentuk tertentu.

publik kosong loadArray (float[] src)

Memuat array float ke buffer ini. Jika buffer memiliki jenis berbeda dari float, dikonversi ke dalam tipe {i>buffer<i} sebelum dimuat ke dalam {i>buffer<i}, dan presisi mungkin berlaku. Misalnya, memuat array float ke TensorBufferUint8 dengan nilai {400.32f, -23.04f}, nilai akan dibulatkan ke [0, 255] dan kemudian ditransmisikan ke uint8 oleh {255, 0}.

Menggunakan metode ini mengasumsikan bahwa bentuk src sama dengan bentuk ini TensorBuffer. Dengan demikian ukuran buffer (src.length) harus selalu cocok ukuran datar 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.

publik kosong loadArray (int[] src)

Memuat array int ke buffer ini. Jika buffer memiliki jenis yang berbeda dari int, akan dikonversi ke dalam tipe {i>buffer<i} sebelum dimuat ke dalam {i>buffer<i}, dan hilangnya presisi mungkin berlaku. Misalnya, memuat array int dengan nilai {400, -23} menjadi TensorBufferUint8, nilai tersebut akan dibulatkan ke [0, 255], lalu ditransmisikan ke uint8 dengan {255, 0}.

Menggunakan metode ini mengasumsikan bahwa bentuk src sama dengan bentuk ini TensorBuffer. Dengan demikian ukuran buffer (src.length) harus selalu cocok ukuran datar 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.

publik kosong loadBuffer (ByteBuffer)

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

Menggunakan metode ini mengasumsikan bahwa bentuk buffer sama dengan bentuk ini TensorBuffer. Dengan demikian ukuran buffer (buffer.limit()) harus selalu cocokkan ukuran datar TensorBuffer ini, untuk TensorBuffer ukuran tetap dan dinamis. Gunakan loadBuffer(ByteBuffer, int[]) jika buffer memiliki bentuk tertentu.

Penting: Buffering yang dimuat adalah referensi. JANGAN DIMODIFIKASI. Kita tidak membuat salinan untuk masalah performa, tetapi jika perlu perubahan, buat salinannya.

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

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

Parameter
buffer Buffering byte yang akan dimuat.

publik kosong loadBuffer (buffer ByteBuffer, bentuk int[])

Memuat buffer byte ke TensorBuffer ini dengan bentuk tertentu.

Penting: Buffering yang dimuat adalah referensi. JANGAN DIMODIFIKASI. Kita tidak membuat salinan untuk masalah performa, tetapi jika perlu perubahan, buat salinannya.

Untuk performa terbaik, selalu muat ByteBuffer atau ByteBuffer langsung didukung oleh suatu 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.