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