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 (Tipo de datos tipo de datos )
Crea un TensorBuffer dinámico vacío con DataType especificado.
TensorBuffer estático
createFixedSize (int[] forma, tipo de datos tipo de datos )
Crea un TensorBuffer con shape y DataType especificados.
TensorBuffer estático
createFrom (búfer TensorBuffer , tipo de datos tipo de datos )
Crea un TensorBuffer que copia en profundidad datos de otro, con DataType especificado.
Búfer de bytes
obtenerBuffer ()
Devuelve el búfer de datos.
tipo de datos abstracto
obtener tipo de datos ()
Devuelve el tipo de datos de este búfer.
En t
obtenerTamaño plano ()
Obtiene el tamaño plano del búfer.
flotador abstracto []
obtenerFloatArray ()
Devuelve una matriz flotante de los valores almacenados en este búfer.
flotador abstracto
getFloatValue (int absIndex)
Devuelve un valor flotante en un índice determinado.
resumen int[]
obtenerIntArray ()
Devuelve una matriz int de los valores almacenados en este búfer.
resumen entero
getIntValue (int absIndex)
Devuelve un valor int en un índice determinado.
En t[]
obtener forma ()
Obtiene la forma actual.
resumen entero
getTypeSize ()
Devuelve el número de bytes de un único elemento de la matriz.
booleano
es dinámico ()
Devuelve si TensorBuffer tiene un tamaño dinámico (podría cambiar su tamaño arbitrariamente).
vacío abstracto
loadArray (int[] src, int[] forma)
Carga una matriz int en este búfer con una forma específica.
vacío abstracto
loadArray (float[] src, int[] forma)
Carga una matriz flotante en este búfer con una forma específica.
vacío
loadArray (flotante[] origen)
Carga una matriz flotante en este búfer.
vacío
loadArray (int[] origen)
Carga una matriz int en este búfer.
vacío
loadBuffer (búfer ByteBuffer )
Carga un búfer de bytes en este TensorBuffer .
vacío
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

TensorBuffer estático público createDynamic (Tipo de datos tipo de datos )

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

Los TensorBuffers dinámicos reasignarán la memoria al cargar matrices o búferes de datos de diferentes tamaños de búfer. A continuación se muestran 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
tipo de datos El tipo de datos del TensorBuffer que se creará.

TensorBuffer estático público createFixedSize (forma int [], tipo de datos tipo de datos )

Crea un TensorBuffer con shape y DataType especificados. A continuación se muestran 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 creado.

Parámetros
forma La forma del TensorBuffer que se creará.
tipo de datos El tipo de datos del TensorBuffer que se creará.
Lanza
Excepción de puntero nulo si shape es nula.
Argumento de excepción ilegal si shape tiene elementos no positivos.

TensorBuffer estático público createFrom (búfer TensorBuffer , tipo de datos tipo de datos )

Crea un TensorBuffer que copia en profundidad datos de otro, con DataType especificado.

Parámetros
buffer el TensorBuffer de origen desde el que copiar.
tipo de datos el DataType esperado del TensorBuffer recién creado.
Lanza
Excepción de puntero nulo si buffer es nulo.

público ByteBuffer getBuffer ()

Devuelve el búfer de datos.

tipo de datos abstracto público getDataType ()

Devuelve el tipo de datos de este búfer.

público int getFlatSize ()

Obtiene el tamaño plano del búfer.

Lanza
Excepción de estado ilegal si los datos subyacentes están dañados

flotador abstracto público [] getFloatArray ()

Devuelve una matriz flotante de los valores almacenados en este búfer. Si el búfer es de tipos diferentes al flotante, los valores se convertirán en flotantes. Por ejemplo, los valores en TensorBufferUint8 se convertirán de uint8 a flotante.

flotante abstracto público getFloatValue (int absIndex)

Devuelve un valor flotante en un índice determinado. Si el búfer es de tipo diferente al flotante, el valor se convertirá en flotante. Por ejemplo, al leer un valor de TensorBufferUint8 , el valor primero se leerá como uint8 y luego se convertirá de uint8 a 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
índice abs El índice absoluto del valor a leer.

resumen público int[] getIntArray ()

Devuelve una matriz 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 a int y es posible que se produzca una pérdida de precisión. Por ejemplo, al obtener una matriz int de TensorBufferFloat con valores {400.32f, 23.04f}, el resultado es {400, 23}.

resumen público int getIntValue (int absIndex)

Devuelve un valor int en un índice determinado. Si el búfer es de tipos diferentes a int, el valor se convertirá en int. Por ejemplo, al leer un valor de TensorBufferFloat , el valor primero se leerá como float y luego se convertirá de float a int. Puede haber 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
índice abs El índice absoluto del valor a leer.

int público[] getShape ()

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

Lanza
Excepción de estado ilegal si los datos subyacentes están dañados

resumen público int getTypeSize ()

Devuelve el número de bytes de un único elemento de la matriz. Por ejemplo, un búfer flotante devolverá 4 y un búfer de bytes devolverá 1.

público booleano es dinámico ()

Devuelve si TensorBuffer tiene un tamaño dinámico (podría cambiar su tamaño arbitrariamente).

loadArray vacío abstracto público (int[] src, int[] forma)

Carga una matriz int en este búfer con una forma específica. Si el búfer es de tipos diferentes a int, los valores se convertirán al tipo del búfer antes de cargarse en el búfer y se puede aplicar una pérdida de precisión. Por ejemplo, al cargar una matriz int con valores {400, -23} en TensorBufferUint8 , los valores se limitarán a [0, 255] y luego se convertirán a uint8 mediante {255, 0}.

Parámetros
src La matriz de origen que se va a cargar.
forma Forma del tensor que representa src .
Lanza
Excepción de puntero nulo si src es nulo.
Excepción de puntero nulo si shape es nula.
Argumento de excepción ilegal si el tamaño de la matriz que se va a cargar no coincide con la forma especificada.

loadArray vacío abstracto público (float[] src, int[] forma)

Carga una matriz flotante en este búfer con una forma específica. Si el búfer es de un tipo diferente al flotante, los valores se convertirán al tipo del búfer antes de cargarse en el búfer y es posible que se produzca una pérdida de precisión. Por ejemplo, al cargar una matriz flotante en TensorBufferUint8 con valores {400.32f, -23.04f}, los valores se limitarán a [0, 255] y luego se convertirán a uint8 mediante {255, 0}.

Parámetros
src La matriz de origen que se va a cargar.
forma Forma del tensor que representa src .
Lanza
Excepción de puntero nulo si src es nulo.
Excepción de puntero nulo si shape es nula.
Argumento de excepción ilegal si el tamaño de la matriz que se va a cargar no coincide con la forma especificada.

matriz de carga vacía pública (flotante [] src)

Carga una matriz flotante en este búfer. Si el búfer es de un tipo diferente al flotante, los valores se convertirán al tipo del búfer antes de cargarse en el búfer y es posible que se produzca una pérdida de precisión. Por ejemplo, al cargar una matriz flotante en TensorBufferUint8 con valores {400.32f, -23.04f}, los valores se limitarán a [0, 255] y luego se convertirán a uint8 mediante {255, 0}.

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

Parámetros
src La matriz de origen que se va a cargar.

array de carga vacío público (int[] src)

Carga una matriz int en este búfer. Si el búfer es de tipos diferentes a int, los valores se convertirán al tipo del búfer antes de cargarse en el búfer y se puede aplicar una pérdida de precisión. Por ejemplo, al cargar una matriz int con valores {400, -23} en TensorBufferUint8 , los valores se limitarán a [0, 255] y luego se convertirán a uint8 mediante {255, 0}.

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

Parámetros
src La matriz de origen que se va a cargar.

loadBuffer público vacío (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 supone que la forma del buffer es la misma que la forma de este TensorBuffer . Por lo tanto, el tamaño del buffer ( buffer.limit() ) siempre debe coincidir con el tamaño plano de este TensorBuffer , tanto para TensorBuffer de tamaño fijo como para TensorBuffer dinámico. Utilice loadBuffer(ByteBuffer, int[]) si buffer tiene una forma diferente.

Importante: el búfer cargado es una referencia. NO MODIFICAR. No creamos una copia aquí por motivos de rendimiento, pero si es necesario realizar modificaciones, haga una copia.

Para obtener el mejor rendimiento, cargue siempre un ByteBuffer directo o un ByteBuffer respaldado por una matriz.

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

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

loadBuffer vacío público (búfer 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í por motivos de rendimiento, pero si es necesario realizar modificaciones, haga una copia.

Para obtener el mejor rendimiento, cargue siempre un ByteBuffer directo o un ByteBuffer respaldado por una matriz.

Parámetros
buffer El búfer de bytes que se va a cargar.
forma
Lanza
Excepción de puntero nulo si buffer es nulo.
Argumento de excepción ilegal si el tamaño del buffer y typeSize no coinciden o el tamaño del buffer y flatSize no coinciden.