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