TensorBuffer

classe astratta pubblica TensorBuffer
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)
Crea un TensorBuffer con shape e DataType specificati.
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
loadBuffer (buffer ByteBuffer )
Carica un buffer di byte in questo TensorBuffer .
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.

pubblico ByteBuffer getBuffer ()

Restituisce il buffer dei dati.

public abstract DataType getDataType ()

Restituisce il tipo di dati di questo buffer.

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.