Expõe instâncias de DataLayout
de formatos de dados freqüentemente usados em computação de álgebra linear.
Exemplo de uso:
// Storing boolean values in a ByteDataBuffer
BooleanDataBuffer boolBuffer = DataLayouts.BOOL.applyTo(byteDataBuffer);
// Allocating a new buffer of 256 half floats
FloatDataBuffer halfBuffer = DataLayouts.FLOAT16.applyTo(DataBuffers.ofShorts(256 * DataLayouts.FLOAT16.scale());
Campos
public static final FloatDataLayout < ShortDataBuffer > | BFLOAT16 | Layout de dados para converter bfloats de 16 bits de / para valores curtos. |
public static final BooleanDataLayout < ByteDataBuffer > | BOOL | Layout de dados para converter booleanos de / para valores de bytes. |
public static final FloatDataLayout < ShortDataBuffer > | FLOAT16 | Layout de dados para converter meias flutuações de 16 bits de / para valores curtos. |
Construtores Públicos
DataLayouts () |
Métodos Públicos
DataLayout estático < DataBuffer <byte []>, String> | ofStrings (conjunto de caracteres Charset) Cria um layout de dados para converter strings de / para sequências de bytes. |
Métodos herdados
Campos
public static final FloatDataLayout < ShortDataBuffer > BFLOAT16
Layout de dados para converter bfloats de 16 bits de / para valores curtos.
Esse formato costumava ser específico do TensorFlow, mas agora foi adotado de forma mais ampla no campo do aprendizado de máquina. Ele é otimizado para conversão rápida com pontos flutuantes de 32 bits de precisão única, simplesmente mudando seu valor e truncando a mantissa para apenas 7 bits.
Portanto, isso é uma perda de precisão na parte fracionária em comparação com a especificação de ponto flutuante de meia precisão IEEE-754 (consulte FLOAT16
mas tem uma gama maior de valores possíveis em toda a parte, pois preserva o expoente de 8 bits e usa o mesmo viés, (ou seja, uma faixa absoluta acima de 0 de aproximadamente [10 -40 , 3,39 × 10 38 ]
Algumas CPUs suportam o formato bfloat16 nativamente para melhores desempenhos.
public static final BooleanDataLayout < ByteDataBuffer > BOOL
Layout de dados para converter booleanos de / para valores de bytes.
Como não há buffer booleano Java NIO, esse layout é particularmente útil para mapear valores booleanos para buffers de byte padrão. A conversão entre um booleano e um byte requer conversão explícita de tipo.
public static final FloatDataLayout < ShortDataBuffer > FLOAT16
Layout de dados para converter meias flutuações de 16 bits de / para valores curtos.
Os meios flutuantes são armazenados na memória de acordo com a especificação de ponto flutuante de meia precisão IEEE-754 e são convertidos de / para flutuadores de 32 bits no espaço do usuário.
Há uma perda potencial de precisão ao converter um único float (32 bits) em meio float (16 bits). A faixa absoluta de valores acima de 0 para um meio float é aproximadamente [5,96 × 10 -8 , 6,55 × 10 4 ] e sua parte decimal é arredondada para uma mantissa de 10 bits.
Em geral, o cálculo de half float tem um desempenho melhor em GPUs, pois, em geral, as CPUs não suportam esse formato nativamente.
Construtores Públicos
public DataLayouts ()
Métodos Públicos
public static DataLayout < DataBuffer <byte []>, String> ofStrings (Charset charset)
Cria um layout de dados para converter strings de / para sequências de bytes.
Este layout requer um conjunto de charset
no parâmetro para especificar como as strings devem ser codificadas / decodificadas como sequências de bytes. Portanto, uma nova instância de layout é sempre retornada.
Parâmetros
charset | conjunto de caracteres para usar |
---|
Devoluções
- um novo layout de string