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)
|
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 | |
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 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.
|