| Subclasses diretas conhecidas |
Representa o buffer de dados da entrada ou da saída de um modelo.
Métodos públicos
| estática TensorBuffer | |
| estática TensorBuffer |
createFixedSize(int[] shape, DataType dataType)
|
| 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 | |
| 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 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.
|