TensorBuffer

classe abstrata pública TensorBuffer
Subclasses diretas conhecidas

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

Métodos Públicos

TensorBuffer estático
createDynamic ( DataType dataType)
Cria um TensorBuffer dinâmico vazio com DataType especificado.
TensorBuffer estático
createFixedSize (forma int[], DataType dataType)
Cria um TensorBuffer com shape e DataType especificados.
TensorBuffer estático
createFrom (buffer TensorBuffer , DataType dataType)
Cria um TensorBuffer copiando dados em profundidade de outro, com DataType especificado.
ByteBuffer
getBuffer ()
Retorna o buffer de dados.
tipo de dados abstrato
getDataType ()
Retorna o tipo de dados deste buffer.
interno
getFlatSize ()
Obtém o flatSize do buffer.
flutuador abstrato[]
getFloatArray ()
Retorna uma matriz flutuante dos valores armazenados neste buffer.
flutuador abstrato
getFloatValue (int absIndex)
Retorna um valor flutuante em um determinado índice.
resumo int[]
getIntArray ()
Retorna uma matriz interna dos valores armazenados neste buffer.
abstrato int
getIntValue (int absIndex)
Retorna um valor int em um determinado índice.
interno[]
obterForma ()
Obtém a forma atual.
abstrato int
getTypeSize ()
Retorna o número de bytes de um único elemento da matriz.
boleano
éDinâmico ()
Retorna se o TensorBuffer tiver tamanho dinâmico (pode ser redimensionado arbitrariamente).
vazio abstrato
loadArray (int[] src, int[] forma)
Carrega uma matriz int neste buffer com formato específico.
vazio abstrato
loadArray (float[] src, int[] forma)
Carrega uma matriz flutuante neste buffer com formato específico.
vazio
loadArray (float[] src)
Carrega uma matriz flutuante neste buffer.
vazio
loadArray (int[]src)
Carrega uma matriz int neste buffer.
vazio
loadBuffer (buffer ByteBuffer )
Carrega um buffer de bytes neste TensorBuffer .
vazio
loadBuffer (buffer ByteBuffer , formato int[])
Carrega um buffer de bytes neste TensorBuffer com formato específico.

Métodos herdados

Métodos Públicos

TensorBuffer estático público createDynamic ( DataType dataType)

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

TensorBuffers dinâmicos realocarão memória ao carregar matrizes ou buffers de dados de diferentes tamanhos de buffer. Aqui estão 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
tipo de dados O dataType do TensorBuffer a ser criado.

TensorBuffer estático público createFixedSize (forma int[], DataType dataType)

Cria um TensorBuffer com shape e DataType especificados. Aqui estão 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);
 

O tamanho de um TensorBuffer de tamanho fixo não pode ser alterado depois de criado.

Parâmetros
forma A forma do TensorBuffer a ser criada.
tipo de dados O dataType do TensorBuffer a ser criado.
Lança
Null Pointer Exception se shape for nula.
Exceção de argumento ilegal se shape tiver elementos não positivos.

public static TensorBuffer createFrom (buffer TensorBuffer , DataType dataType)

Cria um TensorBuffer copiando dados em profundidade de outro, com DataType especificado.

Parâmetros
amortecedor o TensorBuffer de origem para copiar.
tipo de dados o DataType esperado do TensorBuffer recém-criado.
Lança
Null Pointer Exception se buffer for nulo.

ByteBuffer público getBuffer ()

Retorna o buffer de dados.

tipo de dados abstrato público getDataType ()

Retorna o tipo de dados deste buffer.

público int getFlatSize ()

Obtém o flatSize do buffer.

Lança
IllegalStateException se os dados subjacentes estiverem corrompidos

float abstrato público[] getFloatArray ()

Retorna uma matriz flutuante dos valores armazenados neste buffer. Se o buffer for de tipos diferentes de float, os valores serão convertidos em float. Por exemplo, os valores em TensorBufferUint8 serão convertidos de uint8 para float.

flutuador abstrato público getFloatValue (int absIndex)

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

 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úblico abstrato int[] getIntArray ()

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

resumo público int getIntValue (int absIndex)

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

 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.

int público[] getForma ()

Obtém a forma atual. (devolvendo uma cópia aqui para evitar modificações inesperadas.)

Lança
IllegalStateException se os dados subjacentes estiverem corrompidos

público abstrato int getTypeSize ()

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

booleano público isDynamic ()

Retorna se o TensorBuffer tiver tamanho dinâmico (pode ser redimensionado arbitrariamente).

público abstrato void loadArray (int[] src, int[] shape)

Carrega uma matriz int neste buffer com formato específico. Se o buffer for de tipos diferentes de int, os valores serão convertidos no tipo do buffer antes de serem carregados no buffer e poderá ocorrer perda de precisão. Por exemplo, carregando uma matriz int com valores {400, -23} em um TensorBufferUint8 , os valores serão fixados em [0, 255] e então convertidos em uint8 por {255, 0}.

Parâmetros
fonte A matriz de origem a ser carregada.
forma Forma do tensor que src representa.
Lança
Null Pointer Exception se src for nulo.
Null Pointer Exception se shape for nula.
Exceção de argumento ilegal se o tamanho da matriz a ser carregada não corresponder ao formato especificado.

público abstrato void loadArray (float[] src, int[] shape)

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

Parâmetros
fonte A matriz de origem a ser carregada.
forma Forma do tensor que src representa.
Lança
Null Pointer Exception se src for nulo.
Null Pointer Exception se shape for nula.
Exceção de argumento ilegal se o tamanho da matriz a ser carregada não corresponder ao formato especificado.

público void loadArray (float[] src)

Carrega uma matriz flutuante neste buffer. Se o buffer for de tipos diferentes de float, os valores serão convertidos no tipo do buffer antes de serem carregados no buffer e poderá ocorrer perda de precisão. Por exemplo, ao carregar uma matriz flutuante em um TensorBufferUint8 com valores {400.32f, -23.04f}, os valores serão fixados em [0, 255] e então convertidos em uint8 por {255, 0}.

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

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

loadArray vazio público (int[] src)

Carrega uma matriz int neste buffer. Se o buffer for de tipos diferentes de int, os valores serão convertidos no tipo do buffer antes de serem carregados no buffer e poderá ocorrer perda de precisão. Por exemplo, carregando uma matriz int com valores {400, -23} em um TensorBufferUint8 , os valores serão fixados em [0, 255] e então convertidos em uint8 por {255, 0}.

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

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

public void loadBuffer (buffer ByteBuffer )

Carrega um buffer de bytes neste TensorBuffer . O tamanho do buffer deve corresponder ao tamanho plano deste TensorBuffer .

O uso deste método pressupõe que o formato do buffer é igual ao formato deste TensorBuffer . Portanto, o tamanho do buffer ( buffer.limit() ) deve sempre corresponder ao tamanho plano deste TensorBuffer , tanto para TensorBuffer de tamanho fixo quanto para dinâmico. Use loadBuffer(ByteBuffer, int[]) se buffer tiver um formato diferente.

Importante: O buffer carregado é uma referência. NÃO MODIFIQUE. Não criamos uma cópia aqui por questões de desempenho, mas se alguma modificação for necessária, faça uma cópia.

Para obter o melhor desempenho, sempre carregue um ByteBuffer direto ou um ByteBuffer apoiado por um array.

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

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

public void loadBuffer (buffer ByteBuffer , formato int[])

Carrega um buffer de bytes neste TensorBuffer com formato específico.

Importante: O buffer carregado é uma referência. NÃO MODIFIQUE. Não criamos uma cópia aqui por questões de desempenho, mas se alguma modificação for necessária, faça uma cópia.

Para obter o melhor desempenho, sempre carregue um ByteBuffer direto ou um ByteBuffer apoiado por um array.

Parâmetros
amortecedor O buffer de bytes a ser carregado.
forma
Lança
Null Pointer Exception se buffer for nulo.
Exceção de argumento ilegal se o tamanho do buffer e typeSize não corresponderem ou o tamanho do buffer e flatSize não corresponderem.