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

TensorBuffer estático
createDynamic(dataType DataType)
Crea un TensorBuffer dinámico vacío con el DataType especificado.
TensorBuffer estático
createFixedSize(int[] shape, DataType dataType)
Crea un TensorBuffer con shape y DataType especificados.
TensorBuffer estático
createFrom(TensorBuffer, dataType DataType)
Crea un TensorBuffer de copia directa de datos desde otro, con el DataType especificado.
ByteBuffer
getBuffer().
Muestra el búfer de datos.
DataType abstracto
getDataType().
Muestra el tipo de datos de este búfer.
int
getFlatSize()
Obtiene el planeSize del búfer.
abstract float[]
getFloatArray().
Muestra un arreglo de números de punto flotante de los valores almacenados en este búfer.
abstract float
getFloatValue(int absIndex)
Muestra un valor flotante en un índice determinado.
resumen int[]
getIntArray()
Muestra un array int de los valores almacenados en este búfer.
resumen int
getIntValue(int absIndex)
Muestra un valor int en un índice determinado.
int[]
getShape()
Obtiene la forma actual.
resumen int
getTypeSize()
Muestra la cantidad de bytes de un solo elemento del array.
boolean
isDynamic()
Muestra si TensorBuffer es de tamaño dinámico (podría cambiarse de forma arbitraria).
abstract void
loadArray(int[] src, int[] forma)
Carga un array int en este búfer con una forma específica.
abstract void
loadArray(forma flotante[] src, int[])
Carga un array de números de punto flotante en este búfer con una forma específica.
void
loadArray(float[] src)
Carga un array de números de punto flotante en este búfer.
void
loadArray(int[] src)
Carga un array 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

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

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

Dynamic TensorBuffers reasignará la memoria cuando se carguen arrays o búferes de datos de diferentes tamaños de búfer. A continuación, se incluyen 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 de la 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:

 // 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 de la TensorBuffer que se creará.
dataType El dataType de la TensorBuffer que se creará.
Arroja
NullPointerException si shape es nulo.
IllegalArgumentException si shape tiene elementos no positivos.

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

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

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

public ByteBuffer getBuffer ()

Muestra el búfer de datos.

public abstract DataType getDataType ()

Muestra el tipo de datos de este búfer.

public int getFlatSize ()

Obtiene el planeSize del búfer.

Arroja
IllegalStateException si los datos subyacentes se dañan

public resumen float[] getFloatArray ()

Muestra un arreglo de números de punto flotante de los valores almacenados en este búfer. Si el búfer es de un tipo diferente al de número de punto flotante, los valores se convertirán en flotantes. Por ejemplo, los valores en TensorBufferUint8 se convertirán de uint8 a número de punto flotante.

public resumen float getFloatValue (int absIndex)

Muestra un valor flotante en un índice determinado. Si el búfer es de un tipo diferente al de número de punto flotante, el valor se convertirá en número de punto flotante. Por ejemplo, cuando se lee un valor de TensorBufferUint8, el valor se leerá primero como uint8 y, luego, se convertirá de uint8 a número de punto flotante.

 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 Es el índice absoluto del valor que se leerá.

public resumen int[] getIntArray ()

Muestra un array int de los valores almacenados en este búfer. Si el búfer es de un tipo diferente a int, los valores se convertirán en int y es posible que se aplique una pérdida de precisión. Por ejemplo, si se obtiene un array int de una TensorBufferFloat con valores {400.32f, 23.04f}, el resultado es {400, 23}.

public abstract int getIntValue (int absIndex)

Muestra un valor int en un índice determinado. Si el búfer es de un tipo diferente de 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 flotante a int. Es posible que se aplique una 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 Es el índice absoluto del valor que se leerá.

public int[] getShape ()

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

Arroja
IllegalStateException si los datos subyacentes se dañan

public abstract int getTypeSize ()

Muestra la cantidad de bytes de un solo elemento del array. Por ejemplo, un búfer de número de punto flotante mostrará 4 y un búfer de bytes mostrará 1.

public boolean isDynamic ()

Muestra si TensorBuffer es de tamaño dinámico (podría cambiarse de forma arbitraria).

public resumen void loadArray (int[] src, int[] shape)

Carga un array int en este búfer con una forma específica. Si el búfer es de un tipo diferente al de int, los valores se convertirán en el tipo de búfer antes de cargarse en el búfer, y es posible que se aplique una pérdida de precisión. Por ejemplo, si se carga un array int con valores {400, -23} en un TensorBufferUint8, los valores se fijarán a [0, 255] y, luego, {255, 0} se convertirán en uint8.

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

public abstract void loadArray (float[] src, int[] shape)

Carga un array de números de punto flotante en este búfer con una forma específica. Si el búfer es de un tipo diferente al de número de punto flotante, los valores se convertirán en el tipo de búfer antes de cargarse en el búfer, y es posible que se aplique una pérdida de precisión. Por ejemplo, si se carga un array de números de punto flotante en una TensorBufferUint8 con valores {400.32f, -23.04f}, los valores se restringirán a [0, 255] y, luego, se convertirán en uint8 por {255, 0}.

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

public void loadArray (float[] src)

Carga un array de números de punto flotante en este búfer. Si el búfer es de un tipo diferente al de número de punto flotante, los valores se convertirán en el tipo de búfer antes de cargarse en el búfer, y es posible que se aplique una pérdida de precisión. Por ejemplo, si se carga un array de números de punto flotante en una TensorBufferUint8 con valores {400.32f, -23.04f}, los valores se restringirán a [0, 255] y, luego, se convertirán en uint8 por {255, 0}.

El uso de este método presupone 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 con el tamaño plano de este TensorBuffer para el tamaño fijo y el dinámico TensorBuffer. Usa loadArray(float[], int[]) si src tiene una forma diferente.

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

public void loadArray (int[] src)

Carga un array int en este búfer. Si el búfer es de un tipo diferente a int, los valores se convertirán en el tipo de búfer antes de cargarse en el búfer, y es posible que se aplique una pérdida de precisión. Por ejemplo, si se carga un array int con valores {400, -23} en un TensorBufferUint8, los valores se fijarán a [0, 255] y, luego, {255, 0} se convertirán en uint8.

El uso de este método presupone 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 con el tamaño plano de este TensorBuffer para el tamaño fijo y el dinámico TensorBuffer. Usa loadArray(int[], int[]) si src tiene una forma diferente.

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

public void loadBuffer (búfer 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 presupone 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 coincidir con el tamaño plano de este TensorBuffer para TensorBuffer de tamaño fijo y dinámico. Usa loadBuffer(ByteBuffer, int[]) si buffer tiene una forma diferente.

Importante: El búfer cargado es una referencia. NO MODIFICAR. No creamos una copia aquí para resolver problemas de rendimiento, pero, si es necesario, haz una copia.

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

Si la buffer es de solo lectura, adoptaremos una estrategia de copiado al escribir para mejorar el rendimiento.

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

public void loadBuffer (búfer ByteBuffer, int[] shape)

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 resolver problemas de rendimiento, pero, si es necesario, haz una copia.

Para obtener el mejor rendimiento, carga siempre un ByteBuffer directo o un ByteBuffer respaldado 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 coincide, o bien el tamaño de buffer y flatSize no coincide.