Sottoclassi dirette conosciute |
Rappresenta il buffer di dati per l'input o l'output di un modello.
Metodi pubblici
TensorBuffer statico | createDynamic (Tipo di dati tipo di dati ) Crea un TensorBuffer dinamico vuoto con DataType specificato. |
TensorBuffer statico | createFixedSize (int[] forma, DataType dataType) |
TensorBuffer statico | createFrom (buffer TensorBuffer , DataType dataType) Crea un TensorBuffer che copia in profondità i dati da un altro, con DataType specificato. |
ByteBuffer | getBuffer () Restituisce il buffer dei dati. |
tipo di dati astratto | getDataType () Restituisce il tipo di dati di questo buffer. |
int | getFlatSize () Ottiene flatSize del buffer. |
galleggiante astratto[] | getFloatArray () Restituisce un array float dei valori memorizzati in questo buffer. |
galleggiante astratto | getFloatValue (int absIndex) Restituisce un valore float in corrispondenza di un determinato indice. |
int astratto[] | getIntArray () Restituisce un array int dei valori memorizzati in questo buffer. |
astratto int | getIntValue (int absIndex) Restituisce un valore intero in corrispondenza di un determinato indice. |
int[] | ottieni forma () Ottiene la forma corrente. |
astratto int | getTypeSize () Restituisce il numero di byte di un singolo elemento nell'array. |
booleano | èDinamico () Restituisce se TensorBuffer ha dimensioni dinamiche (potrebbe ridimensionarsi arbitrariamente). |
vuoto astratto | loadArray (int[] src, int[] forma) Carica un array int in questo buffer con una forma specifica. |
vuoto astratto | loadArray (float[] src, int[] forma) Carica un array float in questo buffer con una forma specifica. |
vuoto | loadArray (float[] src) Carica un array float in questo buffer. |
vuoto | loadArray (int[] src) Carica un array int in questo buffer. |
vuoto | |
vuoto | loadBuffer (buffer ByteBuffer , forma int[]) Carica un buffer di byte in questo TensorBuffer con una forma specifica. |
Metodi ereditati
Metodi pubblici
TensorBuffer statico pubblico createDynamic ( DataType dataType)
Crea un TensorBuffer
dinamico vuoto con DataType
specificato. La forma del TensorBuffer
creato è {0}.
Dynamic TensorBuffers riallocherà la memoria durante il caricamento di array o buffer di dati di diverse dimensioni di buffer. Ecco alcuni esempi:
// 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.
Parametri
tipo di dati | Il dataType del TensorBuffer da creare. |
---|
pubblico statico TensorBuffer createFixedSize (int[] forma, DataType dataType)
Crea un TensorBuffer
con shape
e DataType
specificati. Ecco alcuni esempi:
// 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);
La dimensione di un TensorBuffer a dimensione fissa non può essere modificata una volta creato.
Parametri
forma | La forma del TensorBuffer da creare. |
---|---|
tipo di dati | Il dataType del TensorBuffer da creare. |
Lancia
NullPointerException | se shape è nulla. |
---|---|
IllegalArgumentException | se shape ha elementi non positivi. |
TensorBuffer statico pubblico createFrom (buffer TensorBuffer , DataType dataType)
Crea un TensorBuffer
che copia in profondità i dati da un altro, con DataType
specificato.
Parametri
respingente | il TensorBuffer di origine da cui copiare. |
---|---|
tipo di dati | il DataType previsto del TensorBuffer appena creato. |
Lancia
NullPointerException | se buffer è nullo. |
---|
public int getFlatSize ()
Ottiene flatSize del buffer.
Lancia
IllegalStateException | se i dati sottostanti sono danneggiati |
---|
public abstract float[] getFloatArray ()
Restituisce un array float dei valori memorizzati in questo buffer. Se il buffer è di tipo diverso da float, i valori verranno convertiti in float. Ad esempio, i valori in TensorBufferUint8
verranno convertiti da uint8 a float.
public abstract float getFloatValue (int absIndex)
Restituisce un valore float in corrispondenza di un determinato indice. Se il buffer è di tipo diverso da float, il valore verrà convertito in float. Ad esempio, quando si legge un valore da TensorBufferUint8
, il valore verrà prima letto come uint8 e quindi verrà convertito da uint8 a 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);
Parametri
absIndex | L'indice assoluto del valore da leggere. |
---|
public abstract int[] getIntArray ()
Restituisce un array int dei valori memorizzati in questo buffer. Se il buffer è di tipo diverso da int, i valori verranno convertiti in int e potrebbe verificarsi una perdita di precisione. Ad esempio, ottenendo un array int da TensorBufferFloat
con valori {400.32f, 23.04f}, l'output è {400, 23}.
public abstract int getIntValue (int absIndex)
Restituisce un valore intero in corrispondenza di un determinato indice. Se il buffer è di tipo diverso da int, il valore verrà convertito in int. Ad esempio, quando si legge un valore da TensorBufferFloat
, il valore verrà prima letto come float e quindi verrà convertito da float a int. Potrebbe verificarsi una perdita di precisione.
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.
Parametri
absIndex | L'indice assoluto del valore da leggere. |
---|
public int[] getShape ()
Ottiene la forma corrente. (restituendo una copia qui per evitare modifiche impreviste.)
Lancia
IllegalStateException | se i dati sottostanti sono danneggiati |
---|
public abstract int getTypeSize ()
Restituisce il numero di byte di un singolo elemento nell'array. Ad esempio, un buffer float restituirà 4 e un buffer byte restituirà 1.
booleano pubblico isDynamic ()
Restituisce se TensorBuffer
ha dimensioni dinamiche (potrebbe ridimensionarsi arbitrariamente).
public abstract void loadArray (int[] src, int[] shape)
Carica un array int in questo buffer con una forma specifica. Se il buffer è di tipo diverso da int, i valori verranno convertiti nel tipo del buffer prima di essere caricati nel buffer e potrebbe verificarsi una perdita di precisione. Ad esempio, caricando un array int con valori {400, -23} in un TensorBufferUint8
, i valori verranno bloccati su [0, 255] e quindi convertiti in uint8 da {255, 0}.
Parametri
src | L'array di origine da caricare. |
---|---|
forma | Forma del tensore rappresentato da src . |
Lancia
NullPointerException | se src è nullo. |
---|---|
NullPointerException | se shape è nulla. |
IllegalArgumentException | se la dimensione dell'array da caricare non corrisponde alla forma specificata. |
public abstract void loadArray (float[] src, int[] shape)
Carica un array float in questo buffer con una forma specifica. Se il buffer è di tipo diverso da float, i valori verranno convertiti nel tipo del buffer prima di essere caricati nel buffer e potrebbe verificarsi una perdita di precisione. Ad esempio, caricando un array float in un TensorBufferUint8
con valori {400.32f, -23.04f}, i valori verranno bloccati su [0, 255] e quindi convertiti in uint8 da {255, 0}.
Parametri
src | L'array di origine da caricare. |
---|---|
forma | Forma del tensore rappresentato da src . |
Lancia
NullPointerException | se src è nullo. |
---|---|
NullPointerException | se shape è nulla. |
IllegalArgumentException | se la dimensione dell'array da caricare non corrisponde alla forma specificata. |
public void loadArray (float[] src)
Carica un array float in questo buffer. Se il buffer è di tipo diverso da float, i valori verranno convertiti nel tipo del buffer prima di essere caricati nel buffer e potrebbe verificarsi una perdita di precisione. Ad esempio, caricando un array float in un TensorBufferUint8
con valori {400.32f, -23.04f}, i valori verranno bloccati su [0, 255] e quindi convertiti in uint8 da {255, 0}.
L'utilizzo di questo metodo presuppone che la forma di src
sia la stessa della forma di questo TensorBuffer
. Pertanto, la dimensione del buffer
( src.length
) dovrebbe sempre corrispondere alla dimensione piatta di questo TensorBuffer
, sia per TensorBuffer
a dimensione fissa che dinamico. Utilizzare loadArray(float[], int[])
se src
ha una forma diversa.
Parametri
src | L'array di origine da caricare. |
---|
public void loadArray (int[] src)
Carica un array int in questo buffer. Se il buffer è di tipo diverso da int, i valori verranno convertiti nel tipo del buffer prima di essere caricati nel buffer e potrebbe verificarsi una perdita di precisione. Ad esempio, caricando un array int con valori {400, -23} in un TensorBufferUint8
, i valori verranno bloccati su [0, 255] e quindi convertiti in uint8 da {255, 0}.
L'utilizzo di questo metodo presuppone che la forma di src
sia la stessa della forma di questo TensorBuffer
. Pertanto, la dimensione del buffer
( src.length
) dovrebbe sempre corrispondere alla dimensione piatta di questo TensorBuffer
, sia per TensorBuffer
a dimensione fissa che dinamico. Utilizzare loadArray(int[], int[])
se src
ha una forma diversa.
Parametri
src | L'array di origine da caricare. |
---|
public void loadBuffer (buffer ByteBuffer )
Carica un buffer di byte in questo TensorBuffer
. La dimensione del buffer deve corrispondere alla dimensione flat di questo TensorBuffer
.
L'utilizzo di questo metodo presuppone che la forma del buffer
sia la stessa della forma di questo TensorBuffer
. Pertanto, la dimensione del buffer
( buffer.limit()
) dovrebbe sempre corrispondere alla dimensione piatta di questo TensorBuffer
, sia per TensorBuffer
a dimensione fissa che dinamico. Utilizzare loadBuffer(ByteBuffer, int[])
se buffer
ha una forma diversa.
Importante: il buffer caricato è un riferimento. NON MODIFICARE. Non creiamo una copia qui per motivi di prestazioni, ma se è necessaria una modifica, creane una copia.
Per ottenere prestazioni ottimali, caricare sempre un ByteBuffer
diretto o un ByteBuffer
supportato da un array.
Se il buffer
è di sola lettura, adottiamo una strategia copy-on-write per migliorare le prestazioni.
Parametri
respingente | Buffer di byte da caricare. |
---|
public void loadBuffer (buffer ByteBuffer , forma int[])
Carica un buffer di byte in questo TensorBuffer
con una forma specifica.
Importante: il buffer caricato è un riferimento. NON MODIFICARE. Non creiamo una copia qui per motivi di prestazioni, ma se è necessaria una modifica, creane una copia.
Per ottenere prestazioni ottimali, caricare sempre un ByteBuffer
diretto o un ByteBuffer
supportato da un array.
Parametri
respingente | Buffer di byte da caricare. |
---|---|
forma |
Lancia
NullPointerException | se buffer è nullo. |
---|---|
IllegalArgumentException | se la dimensione di buffer e typeSize non corrispondono o la dimensione di buffer e flatSize non corrispondono. |