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(DataType 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 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
loadBuffer(buffer ByteBuffer)
Carica un buffer di byte in questo TensorBuffer.
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 ByteBuffer getBuffer ()

Restituisce il buffer di dati.

pubblica astratto DataType getDataType ()

Restituisce il tipo di dati del buffer.

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.