TensorBuffer

classe astratta pubblica TensorBuffer
Sottoclassi dirette note

Rappresenta il buffer dei dati per l'input o l'output di un modello.

Metodi pubblici

statico TensorBuffer
createDynamic(Tipo di dati DataType)
Crea un elemento TensorBuffer dinamico vuoto con il valore DataType specificato.
statico TensorBuffer
createFixedSize(int[] shape, DataType dataType)
Crea un elemento TensorBuffer con shape e DataType specificati.
statico TensorBuffer
createFrom(buffer TensorBuffer, dataType DataType)
Crea un TensorBuffer di dati di copia approfondita da un altro, con il valore DataType specificato.
ByteBuffer
getBuffer()
Restituisce il buffer dei dati.
astratto DataType
getDataType()
Restituisce il tipo di dati di questo buffer.
int
getFlatSize()
Restituisce il valore flatSize del buffer.
astratto float[]
getFloatArray()
Restituisce una matrice float dei valori memorizzati in questo buffer.
astratto float
getFloatValue(int ABIndex)
Restituisce un valore in virgola mobile in un determinato indice.
astratto int[]
getIntArray()
Restituisce un array int dei valori memorizzati in questo buffer.
astratto int
getIntValue(int ABIndex)
Restituisce un valore int in un determinato indice.
int[]
getShape()
Recupera la forma attuale.
astratto int
getTypeSize()
Restituisce il numero di byte di un singolo elemento dell'array.
boolean
isDynamic()
Restituisce un valore di TensorBuffer con dimensioni dinamiche (il ridimensionamento potrebbe essere arbitrario).
astratto void
loadArray(int[] src, int[] shape)
Carica un array int in questo buffer con una forma specifica.
astratto void
loadArray(float[] src, int[] shape)
Carica un array float in questo buffer con una forma specifica.
void
loadArray(float[] src)
Carica un array float in questo buffer.
void
loadArray(int[] src)
Carica un array int in questo buffer.
void
loadBuffer(buffer ByteBuffer)
Carica un buffer di byte in questo TensorBuffer.
void
loadBuffer(buffer ByteBuffer, forma int[])
Carica un buffer di byte in questo TensorBuffer con una forma specifica.

Metodi ereditati

Metodi pubblici

statico pubblico TensorBuffer createDynamic (DataTypeDataType)

Crea un elemento TensorBuffer dinamico vuoto con il valore DataType specificato. La forma della risorsa TensorBuffer creata è {0}.

I TensorBuffers dinamici riallocano la memoria durante il caricamento di array o buffer di dati con buffer di dimensioni diverse. 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
dataType Il dataType del TensorBuffer da creare.

pubblico statico TensorBuffer createFixedSize (int[] shape, DataType dataType)

Crea un elemento 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);
 

Le dimensioni di un TensorBuffer a dimensione fissa non possono essere modificate dopo la creazione.

Parametri
shape La forma dell'elemento TensorBuffer da creare.
dataType Il dataType del TensorBuffer da creare.
Lanci
NullPointerException se shape è nullo.
IllegalArgumentException se shape ha elementi non positivi.

statico pubblico TensorBuffer createFrom (buffer TensorBuffer, dataType DataType)

Crea un TensorBuffer di dati di copia approfondita da un altro, con il valore DataType specificato.

Parametri
buffer l'origine TensorBuffer da cui eseguire la copia.
dataType la quantità prevista di DataType di TensorBuffer appena creata.
Lanci
NullPointerException se buffer è nullo.

pubblica ByteBuffer getBuffer ()

Restituisce il buffer dei dati.

pubblico astratto DataType getDataType ()

Restituisce il tipo di dati di questo buffer.

pubblica int getFlatSize ()

Restituisce il valore flatSize del buffer.

Lanci
IllegalStateException se i dati sottostanti sono danneggiati

pubblico astratto float[] getFloatArray ()

Restituisce una matrice float dei valori memorizzati in questo buffer. Se il buffer è di tipo diverso da quello in virgola mobile, i valori verranno convertiti in valori in virgola mobile. Ad esempio, i valori in TensorBufferUint8 verranno convertiti da uint8 a float.

pubblico astratto float getFloatValue (int ABIndex)

Restituisce un valore in virgola mobile in un determinato indice. Se il buffer è di tipo diverso da quello in virgola mobile, il valore verrà convertito in valore in virgola mobile. Ad esempio, durante la lettura di un valore da TensorBufferUint8, il valore verrà prima letto come uint8 e poi 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.

pubblico astratto 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 essere applicata la perdita di precisione. Ad esempio, se si ottiene un array int da un elemento TensorBufferFloat con i valori {400.32f, 23.04f}, l'output è {400, 23}.

Public astratto int getIntValue (int ABIndex)

Restituisce un valore int in un determinato indice. Se il buffer è di tipo diverso da int, il valore verrà convertito in int. Ad esempio, durante la lettura di un valore da TensorBufferFloat, il valore verrà prima letto come in virgola mobile e poi convertito da in virgola mobile a int. Potrebbe essere applicata 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.

pubblica int[] getShape ()

Recupera la forma attuale. (restituendo una copia qui per evitare modifiche impreviste).

Lanci
IllegalStateException se i dati sottostanti sono danneggiati

pubblici astratto int getTypeSize ()

Restituisce il numero di byte di un singolo elemento dell'array. Ad esempio, un buffer in virgola mobile restituirà 4 e un buffer di byte restituirà 1.

pubblici booleano isDynamic ()

Restituisce un valore di TensorBuffer con dimensioni dinamiche (il ridimensionamento potrebbe essere arbitrario).

pubblici astratto 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 essere applicata una perdita di precisione. Ad esempio, se carichi un array int con i valori {400, -23} in un TensorBufferUint8 , i valori verranno bloccati su [0, 255] e poi trasmessi a uint8 da {255, 0}.

Parametri
src L'array di origine da caricare.
shape Forma del tensore rappresentata da src.
Lanci
NullPointerException se src è nullo.
NullPointerException se shape è nullo.
IllegalArgumentException se le dimensioni dell'array da caricare non corrispondono alla forma specificata.

pubblici astratto void loadArray (float[] src, int[] shape)

Carica un array float in questo buffer con una forma specifica. Se il buffer è di tipo diverso da quello in virgola mobile, i valori verranno convertiti nel tipo di buffer prima di essere caricati nel buffer e potrebbe essere applicata una perdita di precisione. Ad esempio, se carichi un array float in un TensorBufferUint8 con i valori {400.32f, -23.04f}, i valori verranno bloccati su [0, 255] e poi trasmessi a uint8 da {255, 0}.

Parametri
src L'array di origine da caricare.
shape Forma del tensore rappresentata da src.
Lanci
NullPointerException se src è nullo.
NullPointerException se shape è nullo.
IllegalArgumentException se le dimensioni dell'array da caricare non corrispondono alla forma specificata.

Public void loadArray (float[] src)

Carica un array float in questo buffer. Se il buffer è di tipo diverso da quello in virgola mobile, i valori verranno convertiti nel tipo di buffer prima di essere caricati nel buffer e potrebbe essere applicata una perdita di precisione. Ad esempio, se carichi un array float in un TensorBufferUint8 con i valori {400.32f, -23.04f}, i valori verranno bloccati su [0, 255] e poi trasmessi a uint8 da {255, 0}.

L'utilizzo di questo metodo presuppone che la forma di src sia la stessa di questa TensorBuffer. Di conseguenza, la dimensione di buffer (src.length) deve corrispondere sempre alla dimensione piatta di TensorBuffer, sia per il valore TensorBuffer a dimensione fissa che per quello dinamico. Usa 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 essere applicata una perdita di precisione. Ad esempio, se carichi un array int con i valori {400, -23} in TensorBufferUint8 , i valori verranno bloccati su [0, 255] e poi trasmessi a uint8 da {255, 0}.

L'utilizzo di questo metodo presuppone che la forma di src sia la stessa di questa TensorBuffer. Di conseguenza, la dimensione di buffer (src.length) deve corrispondere sempre alla dimensione piatta di TensorBuffer, sia per il valore TensorBuffer a dimensione fissa che per quello dinamico. Usa 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 fissa di questo TensorBuffer.

L'utilizzo di questo metodo presuppone che la forma di buffer sia la stessa di questa TensorBuffer. Di conseguenza, la dimensione di buffer (buffer.limit()) deve corrispondere sempre alla dimensione fissa di TensorBuffer, sia per il valore TensorBuffer a dimensione fissa che per quello dinamico. Utilizza loadBuffer(ByteBuffer, int[]) se buffer ha una forma diversa.

Importante: il buffer caricato è un riferimento. NON MODIFICARE. Non creiamo una copia qui per problemi di prestazioni, ma se sono necessarie modifiche, creane una copia.

Per ottenere prestazioni ottimali, carica sempre un oggetto ByteBuffer diretto o ByteBuffer supportato da un array.

Se buffer è di sola lettura, adottiamo una strategia di copia su scrittura per migliorare le prestazioni.

Parametri
buffer Il buffer di byte da caricare.

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

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 problemi di prestazioni, ma se sono necessarie modifiche, creane una copia.

Per ottenere prestazioni ottimali, carica sempre un oggetto ByteBuffer diretto o ByteBuffer supportato da un array.

Parametri
buffer Il buffer di byte da caricare.
shape
Lanci
NullPointerException se buffer è nullo.
IllegalArgumentException se le dimensioni di buffer e typeSize non corrispondono o se le dimensioni di buffer e flatSize non corrispondono.