Sottoclassi dirette note |
Rappresenta il buffer dei dati per l'input o l'output di un modello.
Metodi pubblici
statico TensorBuffer |
createDynamic(DataType 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 copia approfondita dei dati da un altro, con il valore DataType specificato. |
ByteBuffer |
getBuffer()
Restituisce il buffer di dati.
|
astratto DataType |
getDataType()
Restituisce il tipo di dati del buffer.
|
int |
getFlatSize()
Ottiene il valore flatSize del buffer.
|
astratto float[] |
getFloatArray()
Restituisce un array in virgola mobile dei valori memorizzati in questo buffer.
|
astratto in virgola mobile |
getFloatValue(int ABIndex)
Restituisce un valore in virgola mobile in un dato indice.
|
astratto int[] |
getIntArray()
Restituisce un array int dei valori archiviati nel buffer.
|
astratto int |
getIntValue(int ABIndex)
Restituisce un valore int in un determinato indice.
|
int[] |
getShape()
Recupera la forma corrente.
|
astratto int |
getTypeSize()
Restituisce il numero di byte di un singolo elemento dell'array.
|
booleano |
isDynamic()
Restituisce un valore che indica se
TensorBuffer ha dimensioni dinamiche (il ridimensionamento potrebbe avvenire in modo arbitrario). |
astratto null |
loadArray(int[] src, int[] shape)
Carica un array int in questo buffer con una forma specifica.
|
astratto null |
loadArray(float[] src, int[] shape)
Carica un array in virgola mobile in questo buffer con una forma specifica.
|
null |
loadArray(float[] src)
Carica un array in virgola mobile in questo buffer.
|
null |
loadArray(int[] src)
Carica un array int in questo buffer.
|
null | |
null |
loadBuffer(buffer ByteBuffer, forma int[])
Carica un buffer di byte in questo
TensorBuffer con una forma specifica. |
Metodi ereditati
Metodi pubblici
pubblica statico TensorBuffer createDynamic (DataType dataType)
Crea un elemento TensorBuffer
dinamico vuoto con il valore DataType
specificato. La forma del
TensorBuffer
creato è {0}.
Dynamic TensorBuffers rialloca la memoria quando vengono caricati array o buffer di dati dimensioni del buffer 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 di TensorBuffer da creare.
|
---|
pubblica statico TensorBuffer createFixedSize (int[] shape, DataType dataType)
Crea un elemento TensorBuffer
con shape
e DataType
specificati. Ecco alcuni esempi
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);
Dopo la creazione, non è possibile modificare la dimensione di un TensorBuffer a dimensione fissa.
Parametri
forma | La forma di TensorBuffer da creare. |
---|---|
dataType | Il dataType di TensorBuffer da creare. |
Lanci
NullPointerException | se shape è null. |
---|---|
IllegalArgumentException | se shape contiene elementi non positivi.
|
pubblica statico TensorBuffer createFrom (Buffer TensorBuffer, DataType dataType)
Crea un TensorBuffer
di copia approfondita dei dati da un altro, con il valore DataType
specificato.
Parametri
buffer | l'origine TensorBuffer da cui eseguire la copia. |
---|---|
dataType | il valore previsto di DataType per la metrica TensorBuffer appena creata. |
Lanci
NullPointerException | se buffer è null.
|
---|
pubblica int . getFlatSize ()
Ottiene il valore flatSize del buffer.
Lanci
IllegalStateException | se i dati sottostanti sono danneggiati |
---|
pubblica astratto float[] . getFloatArray ()
Restituisce un array in virgola mobile dei valori memorizzati in questo buffer. Se il buffer è di tipo diverso
rispetto a un numero in virgola mobile, i valori verranno convertiti in numeri in virgola mobile. Ad esempio, i valori in TensorBufferUint8
verranno convertiti da uint8 a virgola mobile.
pubblica astratto in virgola mobile . getFloatValue (int ABIndex)
Restituisce un valore in virgola mobile in un dato indice. Se il buffer è di tipo diverso da quello in virgola mobile,
verrà convertito in valore in virgola mobile. Ad esempio, durante la lettura di un valore da TensorBufferUint8
, il valore verrà prima letto come uint8, poi verrà convertito da
uint8 per fluttuare.
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. |
---|
pubblica astratto int[] . getIntArray ()
Restituisce un array int dei valori archiviati nel buffer. Se il buffer è di tipo diverso
rispetto a int, i valori verranno convertiti in int e potrebbe verificarsi una perdita di precisione. Ad esempio:
recuperando un array int da un TensorBufferFloat
con valori {400.32f, 23.04f}, l'output
è {400, 23}.
pubblica astratto int . getIntValue (int ABIndex)
Restituisce un valore int in un determinato indice. Se il buffer è di tipo diverso da int, il valore
verrà convertita in int. Ad esempio, quando leggi un valore da TensorBufferFloat
,
il valore verrà prima letto ad alta voce come numero in virgola mobile, poi verrà convertito da numero in virgola mobile a int. 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 corrente. (restituendo una copia qui per evitare modifiche impreviste.)
Lanci
IllegalStateException | se i dati sottostanti sono danneggiati |
---|
pubblica astratto int . getTypeSize ()
Restituisce il numero di byte di un singolo elemento dell'array. Ad esempio, un buffer in virgola mobile restituisce 4, mentre un buffer di byte restituisce 1.
pubblica booleano . isDynamic ()
Restituisce un valore che indica se TensorBuffer
ha dimensioni dinamiche (il ridimensionamento potrebbe avvenire in modo arbitrario).
pubblica astratto null . loadArray (int[] src, int[] shape)
Carica un array int in questo buffer con una forma specifica. Se il buffer è di tipo diverso
rispetto a int, i valori verranno convertiti nel tipo di buffer prima di essere caricati
buffer e potrebbe verificarsi una perdita di precisione. Ad esempio, il caricamento di un array int con valori {400,
-23} in un TensorBufferUint8
, i valori verranno bloccati su [0, 255] e quindi
trasmesso in uint8 da {255, 0}.
Parametri
src | L'array di origine da caricare. |
---|---|
forma | Forma del tensore rappresentato da src . |
Lanci
NullPointerException | se src è null. |
---|---|
NullPointerException | se shape è null. |
IllegalArgumentException | se la dimensione dell'array da caricare non corrisponde forma specificata. |
pubblica astratto null . loadArray (float[] src, int[] shape)
Carica un array in virgola mobile in questo buffer con una forma specifica. Se il buffer è di tipo diverso
rispetto al valore in virgola mobile, i valori verranno convertiti nel tipo di buffer prima di essere caricati
buffer e potrebbe verificarsi una perdita di precisione. Ad esempio, se carichi un array in virgola mobile in un TensorBufferUint8
con valori {400.32f, -23.04f}, i valori verranno bloccati su [0, 255] e
quindi deve essere trasmesso in uint8 da {255, 0}.
Parametri
src | L'array di origine da caricare. |
---|---|
forma | Forma del tensore rappresentato da src . |
Lanci
NullPointerException | se src è null. |
---|---|
NullPointerException | se shape è null. |
IllegalArgumentException | se la dimensione dell'array da caricare non corrisponde forma specificata. |
pubblica null . loadArray (sorgente in virgola mobile[])
Carica un array in virgola mobile in questo buffer. Se il buffer è di tipo diverso da quello in virgola mobile,
verranno convertiti nel tipo di buffer prima di essere caricati nel buffer e
di precisione. Ad esempio, il caricamento di un array in virgola mobile in un TensorBufferUint8
con valori {400.32f, -23.04f}, i valori verranno bloccati su [0, 255] e quindi trasmessi a
uint8 di {255, 0}.
L'utilizzo di questo metodo presuppone che la forma di src
sia uguale alla forma dell'elemento
TensorBuffer
. Di conseguenza, la dimensione di buffer
(src.length
) deve sempre corrispondere
la dimensione fissa di questo TensorBuffer
, sia per TensorBuffer
di dimensioni fisse sia per quelli dinamici. Usa loadArray(float[], int[])
se src
ha una forma diversa.
Parametri
src | L'array di origine da caricare. |
---|
pubblica null . loadArray (int[] src)
Carica un array int in questo buffer. Se il buffer è di tipo diverso da int, i valori
verrà convertito nel tipo di buffer prima di essere caricato nel buffer, mentre la perdita
la precisione può essere applicata. Ad esempio, se carichi un array int con valori {400, -23} in un TensorBufferUint8
, i valori verranno bloccati su [0, 255] e quindi trasmessi a uint8 tramite
{255, 0}.
L'utilizzo di questo metodo presuppone che la forma di src
sia uguale alla forma dell'elemento
TensorBuffer
. Di conseguenza, la dimensione di buffer
(src.length
) deve sempre corrispondere
la dimensione fissa di questo TensorBuffer
, sia per TensorBuffer
di dimensioni fisse sia per quelli dinamici. Usa loadArray(int[], int[])
se src
ha una forma diversa.
Parametri
src | L'array di origine da caricare. |
---|
pubblica null . loadBuffer (buffer ByteBuffer)
Carica un buffer di byte in questo TensorBuffer
. La dimensione del buffer deve corrispondere alla dimensione fissa
questo TensorBuffer
.
L'utilizzo di questo metodo presuppone che la forma di buffer
sia uguale alla forma dell'elemento
TensorBuffer
. Di conseguenza, la dimensione di buffer
(buffer.limit()
) deve sempre
corrispondono alla dimensione fissa di questo TensorBuffer
, sia per TensorBuffer
a dimensioni fisse che per quelli dinamici. Usa loadBuffer(ByteBuffer, int[])
se buffer
ha un altro
forma.
Importante: il buffer caricato è un riferimento. NON MODIFICARE. Non creiamo una copia qui per problemi di rendimento, ma se è necessaria una modifica, creane una copia.
Per un rendimento ottimale, carica sempre un ByteBuffer
diretto o un ByteBuffer
supportati da un array.
Se il buffer
è di sola lettura, adottiamo una strategia di copia alla scrittura per migliorare le prestazioni.
Parametri
buffer | Il buffer di byte da caricare. |
---|
pubblica null . 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 problemi di rendimento, ma se è necessaria una modifica, creane una copia.
Per un rendimento ottimale, carica sempre un ByteBuffer
diretto o un ByteBuffer
supportati da un array.
Parametri
buffer | Il buffer di byte da caricare. |
---|---|
forma |
Lanci
NullPointerException | se buffer è null. |
---|---|
IllegalArgumentException | se le dimensioni di buffer e typeSize non corrispondono
oppure la dimensione di buffer e flatSize non corrispondono.
|