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 | |
estático TensorBuffer |
createFixedSize(int[] shape, DataType dataType)
|
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 | |
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 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.
|