TensorBuffer

clase abstracta pública TensorBuffer
Subclases directas conocidas

Representa el búfer de datos para la entrada o la salida de un modelo.

Métodos públicos

estático TensorBuffer
createDynamic(dataType DataType)
Crea un TensorBuffer dinámico vacío con el DataType especificado.
estático TensorBuffer
createFixedSize(int[] shape, DataType dataType)
Crea un TensorBuffer con shape y DataType especificados.
estático TensorBuffer
createFrom(búfer TensorBuffer, dataType de DataType)
Crea un TensorBuffer de copia profunda de datos de otro, con el DataType especificado.
ByteBuffer
getBuffer()
Muestra el búfer de datos.
abstracto DataType
getDataType()
Muestra el tipo de datos de este búfer.
int
getFlatSize()
Obtiene el plano del tamaño del búfer.
abstracto float[]
getFloatArray()
Muestra un array de número de punto flotante de los valores almacenados en este búfer.
abstracto número de punto flotante
getFloatValue(int absIndex)
Muestra un valor flotante en un índice determinado.
abstracto número entero
getIntArray()
Muestra un array int de los valores almacenados en este búfer.
abstracto número entero
getIntValue(int absIndex)
Muestra un valor int en un índice determinado.
int[]
getShape()
Obtiene la forma actual.
abstracto número entero
getTypeSize()
Muestra la cantidad de bytes de un solo elemento del array.
boolean
isDynamic()
Se muestra si TensorBuffer tiene un tamaño dinámico (puede hacerlo de manera arbitraria).
abstracto anular
loadArray(int[] src, int[] shape)
Carga un array de int en este búfer con una forma específica.
abstracto anular
loadArray(float[] src, int[] shape)
Carga un array de número de punto flotante en este búfer con una forma específica.
void
loadArray(float[] src)
Carga un array de número de punto flotante en este búfer.
void
loadArray(int[] src)
Carga un array de int en este búfer.
void
loadBuffer(búfer ByteBuffer)
Carga un búfer de bytes en este TensorBuffer.
void
loadBuffer(búfer ByteBuffer, forma int[])
Carga un búfer de bytes en este TensorBuffer con una forma específica.

Métodos heredados

Métodos públicos

público estático TensorBuffer . createDynamic (DataType)

Crea un TensorBuffer dinámico vacío con el DataType especificado. La forma del creado el TensorBuffer es {0}.

Los TensorBuffers dinámicos reasignarán memoria cuando se carguen arrays o búferes de datos de diferentes tamaños de búfer. Estos son algunos ejemplos:

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

Parámetros
dataType El dataType del TensorBuffer que se creará.

público estático TensorBuffer . createFixedSize (int[] shape, DataType dataType)

Crea un TensorBuffer con shape y DataType especificados. Estos son algunos ejemplos ejemplos:

 // 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);
 

El tamaño de un TensorBuffer de tamaño fijo no se puede cambiar una vez que se crea.

Parámetros
shape Es la forma del objeto TensorBuffer que se creará.
dataType El dataType del TensorBuffer que se creará.
Arroja
NullPointerException si shape es nulo.
IllegalArgumentException. si shape tiene elementos no positivos.

público estático TensorBuffer . createFrom (búfer de TensorBuffer, DataType)

Crea un TensorBuffer de copia profunda de datos de otro, con el DataType especificado.

Parámetros
búfer la fuente TensorBuffer desde la que se copiará.
dataType el DataType esperado de TensorBuffer recién creado.
Arroja
NullPointerException si buffer es nulo.

público ByteBuffer . getBuffer ()

Muestra el búfer de datos.

público abstracto DataType . getDataType ()

Muestra el tipo de datos de este búfer.

público número entero getFlatSize ()

Obtiene el plano del tamaño del búfer.

Arroja
IllegalStateException si los datos subyacentes están dañados

público abstracto float[] getFloatArray ()

Muestra un array de número de punto flotante de los valores almacenados en este búfer. Si el búfer es de diferentes tipos de número de punto flotante, los valores se convertirán en números de punto flotante. Por ejemplo, los valores en TensorBufferUint8 se convertirán de uint8 a flotante.

público abstracto número de punto flotante getFloatValue (int absIndex)

Muestra un valor flotante en un índice determinado. Si el búfer es de tipos diferentes a los de número de punto flotante, valor se convertirá en número de punto flotante. Por ejemplo, cuando se lee un valor de TensorBufferUint8, el valor primero se leerá como uint8 y, luego, se convertirá de uint8 para que flote.

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

Parámetros
absIndex El índice absoluto del valor que se leerá.

público abstracto número entero getIntArray ()

Muestra un array int de los valores almacenados en este búfer. Si el búfer es de diferente tipo que int, los valores se convertirán en int y es posible que se produzca una pérdida de precisión. Por ejemplo: obtener un array de números enteros de una TensorBufferFloat con valores {400.32f, 23.04f}, la salida es {400, 23}.

público abstracto número entero getIntValue (int absIndex)

Muestra un valor int en un índice determinado. Si el búfer es de tipos diferentes a los int, el valor se convertirá en int. Por ejemplo, cuando se lee un valor de TensorBufferFloat, el valor se leerá primero como número de punto flotante y, luego, se convertirá de número de punto flotante a número entero. Pérdida de precisión.

 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.
 

Parámetros
absIndex El índice absoluto del valor que se leerá.

público número entero getShape ()

Obtiene la forma actual. (se devuelve una copia aquí para evitar modificaciones inesperadas).

Arroja
IllegalStateException si los datos subyacentes están dañados

público abstracto número entero getTypeSize ()

Muestra la cantidad de bytes de un solo elemento del array. Por ejemplo, un búfer flotante devuelve 4, y un búfer de bytes devolverá 1.

público booleano isDynamic ()

Se muestra si TensorBuffer tiene un tamaño dinámico (puede hacerlo de manera arbitraria).

público abstracto anular loadArray (int[] src, int[] shape)

Carga un array de int en este búfer con una forma específica. Si el búfer es de diferentes tipos int, los valores se convertirán al tipo del búfer antes de cargarlos del búfer y es posible que se produzca la pérdida de precisión. Por ejemplo, cargar un array de números enteros con valores {400, -23} en un TensorBufferUint8, los valores se restringirán a [0, 255] y, luego, se transmitido a uint8 por {255, 0}.

Parámetros
src El array de origen que se cargará.
shape Forma del tensor que src representa.
Arroja
NullPointerException si src es nulo.
NullPointerException si shape es nulo.
IllegalArgumentException. si el tamaño del array que se cargará no coincide con forma especificada.

público abstracto anular loadArray (float[] src, int[] shape)

Carga un array de número de punto flotante en este búfer con una forma específica. Si el búfer es de diferentes tipos que float, los valores se convertirán al tipo del búfer antes de cargarlos del búfer y es posible que se produzca la pérdida de precisión. Por ejemplo, si cargas un array de números de punto flotante en una TensorBufferUint8 con los valores {400.32f, -23.04f}, los valores se fijarán en [0, 255]. luego, {255, 0} la transmitirá a uint8.

Parámetros
src El array de origen que se cargará.
shape Forma del tensor que src representa.
Arroja
NullPointerException si src es nulo.
NullPointerException si shape es nulo.
IllegalArgumentException. si el tamaño del array que se cargará no coincide con forma especificada.

público anular loadArray (float[] src)

Carga un array de número de punto flotante en este búfer. Si el búfer es de tipos diferentes a los de número de punto flotante, valores se convertirán en el tipo del búfer antes de cargarlos en el búfer, y la pérdida de precisión. Por ejemplo, cargar un array de números de punto flotante en una TensorBufferUint8 con los valores {400.32f, -23.04f}, los valores se fijarán en [0, 255] y luego se convertirán uint8 por {255, 0}.

El uso de este método supone que la forma de src es la misma que la de este TensorBuffer Por lo tanto, el tamaño de buffer (src.length) siempre debe coincidir. El tamaño plano de este TensorBuffer, tanto para TensorBuffer de tamaño fijo como dinámico Usa loadArray(float[], int[]) si src tiene una forma diferente.

Parámetros
src El array de origen que se cargará.

público anular loadArray (int[] src)

Carga un array de int en este búfer. Si el búfer es de tipos diferentes a los int, los valores se convertirá en el tipo de búfer antes de cargarse en el búfer, y la pérdida de se podría aplicar la precisión. Por ejemplo, si cargas un array de enteros con valores {400, -23} en un TensorBufferUint8, los valores se restringirán a [0, 255] y, luego, se convertirán en uint8 {255, 0}.

El uso de este método supone que la forma de src es la misma que la de este TensorBuffer Por lo tanto, el tamaño de buffer (src.length) siempre debe coincidir. El tamaño plano de este TensorBuffer, tanto para TensorBuffer de tamaño fijo como dinámico Usa loadArray(int[], int[]) si src tiene una forma diferente.

Parámetros
src El array de origen que se cargará.

público anular loadBuffer (búfer de ByteBuffer)

Carga un búfer de bytes en este TensorBuffer. El tamaño del búfer debe coincidir con el tamaño plano de este TensorBuffer.

El uso de este método supone que la forma de buffer es la misma que la de este TensorBuffer Por lo tanto, el tamaño de buffer (buffer.limit()) siempre debe coincide con el tamaño plano de este TensorBuffer, tanto para el TensorBuffer dinámico como para el de tamaño fijo. Usa loadBuffer(ByteBuffer, int[]) si buffer tiene un valor diferente forma.

Importante: El búfer cargado es una referencia. NO MODIFICAR. No creamos una copia aquí para problema de rendimiento, pero si es necesario realizar alguna modificación, haga una copia.

Para obtener el mejor rendimiento, siempre carga un objeto ByteBuffer directo o ByteBuffer respaldados por un array.

Si buffer es de solo lectura, adoptamos una estrategia de copia en escritura para mejorar el rendimiento.

Parámetros
búfer El búfer de bytes que se cargará.

público anular loadBuffer (búfer de ByteBuffer, forma int[])

Carga un búfer de bytes en este TensorBuffer con una forma específica.

Importante: El búfer cargado es una referencia. NO MODIFICAR. No creamos una copia aquí para problema de rendimiento, pero si es necesario realizar alguna modificación, haga una copia.

Para obtener el mejor rendimiento, siempre carga un objeto ByteBuffer directo o ByteBuffer respaldados por un array.

Parámetros
búfer El búfer de bytes que se cargará.
shape
Arroja
NullPointerException si buffer es nulo.
IllegalArgumentException. si el tamaño de buffer y typeSize no o el tamaño de buffer y flatSize no coinciden.