TensorBuffer

classe abstrata pública TensorBuffer
Subclasses diretas conhecidas

Representa o buffer de dados da entrada ou da saída de um modelo.

Métodos públicos

estática TensorBuffer
createDynamic(dataType DataType)
Cria um TensorBuffer dinâmico vazio com o DataType especificado.
estática TensorBuffer
createFixedSize(int[] shape, DataType dataType)
Cria um TensorBuffer com os shape e DataType especificados.
estática TensorBuffer
createFrom(buffer do TensorBuffer, DataType dataType)
Cria um TensorBuffer de cópia profunda de dados de outro, com o DataType especificado.
ByteBuffer
getBuffer()
Retorna o buffer de dados.
abstrato DataType
getDataType()
Retorna o tipo de dados desse buffer.
int
getFlatSize()
Recebe o flatSize do buffer.
abstrato float[]
getFloatArray()
Retorna uma matriz flutuante dos valores armazenados nesse buffer.
abstrato flutuar
getFloatValue(int absIndex)
Retorna um valor flutuante em um determinado índice.
abstrato int[]
getIntArray()
Retorna uma matriz int dos valores armazenados nesse buffer.
abstrato int.
getIntValue(int absIndex)
Retorna um valor int em um determinado índice.
int[]
getShape()
Recebe a forma atual.
abstrato int.
getTypeSize()
Retorna o número de bytes de um único elemento na matriz.
booleano
isDynamic()
Retorna se TensorBuffer for de tamanho dinâmico (pode ser redimensionado arbitrariamente).
abstrato anular
loadArray(int[] src, int[] shape)
Carrega uma matriz int nesse buffer com uma forma específica.
abstrato anular
loadArray(float[] src, int[] shape)
Carrega uma matriz flutuante nesse buffer com um formato específico.
void
loadArray(float[] src)
Carrega uma matriz flutuante nesse buffer.
void
loadArray(int[] src)
Carrega uma matriz int nesse buffer.
void
loadBuffer(buffer ByteBuffer)
Carrega um buffer de bytes nesse TensorBuffer.
void
loadBuffer(buffer ByteBuffer, formato int[])
Carrega um buffer de bytes nesse TensorBuffer com uma forma específica.

Métodos herdados

Métodos públicos

públicas estática TensorBuffer createDynamic (DataType dataType)

Cria um TensorBuffer dinâmico vazio com o DataType especificado. A forma criado em TensorBuffer é {0}.

Os TensorBuffers dinâmicos realocam a memória ao carregar matrizes ou buffers de dados de tamanhos de buffer diferentes. Veja alguns exemplos:

 // 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 O dataType do TensorBuffer a ser criado.

públicas estática TensorBuffer createFixedSize (int[] shape, DataType dataType)

Cria um TensorBuffer com os shape e DataType especificados. Confira alguns exemplos:

 // 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);
 

Não é possível alterar o tamanho de um TensorBuffer de tamanho fixo depois que ele é criado.

Parâmetros
forma A forma do TensorBuffer a ser criado.
dataType O dataType do TensorBuffer a ser criado.
Gera
NullPointerException se shape for nulo.
IllegalArgumentException se shape tiver elementos não positivos.

públicas estática TensorBuffer createFrom (buffer do TensorBuffer, DataType dataType)

Cria um TensorBuffer de cópia profunda de dados de outro, com o DataType especificado.

Parâmetros
buffer a TensorBuffer de origem da qual copiar.
dataType o DataType esperado de TensorBuffer recém-criados.
Gera
NullPointerException se buffer for nulo.

públicas ByteBuffer getBuffer ()

Retorna o buffer de dados.

públicas abstrato DataType getDataType ()

Retorna o tipo de dados desse buffer.

públicas int. getFlatSize ()

Recebe o flatSize do buffer.

Gera
IllegalStateException se os dados subjacentes estiverem corrompidos

públicas abstrato float[] getFloatArray ()

Retorna uma matriz flutuante dos valores armazenados nesse buffer. Se o buffer for de tipos diferentes que flutuar, os valores serão convertidos em flutuantes. Por exemplo, os valores em TensorBufferUint8 serão convertidos de uint8 para ponto flutuante.

públicas abstrato flutuar getFloatValue (int absIndex)

Retorna um valor flutuante em um determinado índice. Se o buffer for de um tipo diferente do flutuante, o será convertido em ponto flutuante. Por exemplo, ao ler um valor de TensorBufferUint8, o valor será primeiro lido como uint8 e depois convertido de uint8 para flutuar.

 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 O índice absoluto do valor a ser lido.

públicas abstrato int[] getIntArray ()

Retorna uma matriz int dos valores armazenados nesse buffer. Se o buffer for de um tipo diferente que int, os valores serão convertidos em int e pode haver perda de precisão. Por exemplo: obtendo uma matriz int de um TensorBufferFloat com valores {400.32f, 23.04f}, a saída é {400, 23}.

públicas abstrato int. getIntValue (int absIndex)

Retorna um valor int em um determinado índice. Se o buffer for de um tipo diferente de int, o valor serão convertidos em int. Por exemplo, ao ler um valor de TensorBufferFloat, o valor será lido primeiro como flutuante e depois convertido de float para int. Perda de precisão podem ser aplicadas.

 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 O índice absoluto do valor a ser lido.

públicas int[] getShape ()

Recebe a forma atual. (retornando uma cópia aqui para evitar modificações inesperadas.)

Gera
IllegalStateException se os dados subjacentes estiverem corrompidos

públicas abstrato int. getTypeSize ()

Retorna o número de bytes de um único elemento na matriz. Por exemplo, um buffer flutuante retorna 4 e um buffer de bytes retorna 1.

públicas booleano isDynamic ()

Retorna se TensorBuffer for de tamanho dinâmico (pode ser redimensionado arbitrariamente).

públicas abstrato anular loadArray (int[] src, int[] shape)

Carrega uma matriz int nesse buffer com uma forma específica. Se o buffer for de tipos diferentes que int, os valores serão convertidos no tipo do buffer antes de serem carregados e perda de precisão. Por exemplo, carregar uma matriz int com valores {400, -23} em uma TensorBufferUint8 , os valores serão fixados em [0, 255] e depois serão convertido em uint8 por {255, 0}.

Parâmetros
src A matriz de origem a ser carregada.
forma Forma do tensor que src representa.
Gera
NullPointerException se src for nulo.
NullPointerException se shape for nulo.
IllegalArgumentException se o tamanho da matriz a ser carregada não corresponder ao forma especificada.

públicas abstrato anular loadArray (float[] src, int[] shape)

Carrega uma matriz flutuante nesse buffer com um formato específico. Se o buffer for de tipos diferentes do que flutuante, os valores serão convertidos no tipo do buffer antes de serem carregados no e perda de precisão. Por exemplo, ao carregar uma matriz flutuante em uma TensorBufferUint8 com valores {400.32f, -23.04f}, os valores serão fixados em [0, 255] e depois ser convertida em uint8 por {255, 0}.

Parâmetros
src A matriz de origem a ser carregada.
forma Forma do tensor que src representa.
Gera
NullPointerException se src for nulo.
NullPointerException se shape for nulo.
IllegalArgumentException se o tamanho da matriz a ser carregada não corresponder ao forma especificada.

públicas anular loadArray (float[] src)

Carrega uma matriz flutuante nesse buffer. Se o buffer for de um tipo diferente do flutuante, o valores serão convertidos no tipo do buffer antes de serem carregados nele, e a perda de precisão podem ser aplicadas. Por exemplo, carregar uma matriz flutuante em uma TensorBufferUint8 com valores {400.32f, -23.04f}, os valores serão fixados em [0, 255] e convertidos em uint8 por {255, 0}.

O uso desse método pressupõe que a forma de src é igual à forma deste TensorBuffer. Assim, o tamanho de buffer (src.length) precisa sempre corresponder o tamanho plano desse TensorBuffer, para TensorBuffer de tamanho fixo e dinâmico. Use loadArray(float[], int[]) se src tiver uma forma diferente.

Parâmetros
src A matriz de origem a ser carregada.

públicas anular loadArray (int[] src)

Carrega uma matriz int nesse buffer. Se o buffer for de um tipo diferente de int, os valores serão convertidos no tipo do buffer antes de serem carregados nele, e a perda de precisão poderá ser aplicada. Por exemplo, ao carregar uma matriz int com valores {400, -23} em um TensorBufferUint8 , os valores serão fixados em [0, 255] e depois convertidos para uint8 por {255, 0}.

O uso desse método pressupõe que a forma de src é igual à forma deste TensorBuffer. Assim, o tamanho de buffer (src.length) precisa sempre corresponder o tamanho plano desse TensorBuffer, para TensorBuffer de tamanho fixo e dinâmico. Use loadArray(int[], int[]) se src tiver uma forma diferente.

Parâmetros
src A matriz de origem a ser carregada.

públicas anular loadBuffer (buffer de ByteBuffer)

Carrega um buffer de bytes nesse TensorBuffer. O tamanho do buffer deve corresponder ao tamanho simples de este TensorBuffer.

O uso desse método pressupõe que a forma de buffer é igual à forma deste TensorBuffer. Assim, o tamanho de buffer (buffer.limit()) sempre deve correspondem ao tamanho plano desse TensorBuffer, para TensorBuffer de tamanho fixo e dinâmico. Use loadBuffer(ByteBuffer, int[]) se buffer tiver uma forma

Importante: o buffer carregado é uma referência. NÃO MODIFICAR. Não criamos uma cópia aqui para problema de desempenho, mas se a modificação for necessária, faça uma cópia.

Para ter a melhor performance, sempre carregue um ByteBuffer direto ou um ByteBuffer apoiado por uma matriz.

Se o buffer for somente leitura, adotaremos uma estratégia de cópia na gravação para melhorar o desempenho.

Parâmetros
buffer O buffer de bytes a ser carregado.

públicas anular loadBuffer (buffer de ByteBuffer, forma int[])

Carrega um buffer de bytes nesse TensorBuffer com uma forma específica.

Importante: o buffer carregado é uma referência. NÃO MODIFICAR. Não criamos uma cópia aqui para problema de desempenho, mas se a modificação for necessária, faça uma cópia.

Para ter a melhor performance, sempre carregue um ByteBuffer direto ou um ByteBuffer apoiado por uma matriz.

Parâmetros
buffer O buffer de bytes a ser carregado.
forma
Gera
NullPointerException se buffer for nulo.
IllegalArgumentException se o tamanho de buffer e typeSize não ou o tamanho de buffer e flatSize não correspondem.