DataLayouts

publiczna klasa końcowa DataLayouts

Pokazuje wystąpienia DataLayout formatów danych często używanych w obliczeniach algebry liniowej.

Przykład użycia:

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

Pola

publiczny statyczny końcowy FloatDataLayout < ShortDataBuffer > BFLOAT16 Układ danych do konwersji 16-bitowych wartości bfloat na/z krótkich wartości.
publiczny statyczny końcowy BooleanDataLayout < ByteDataBuffer > BOOL Układ danych do konwersji wartości logicznych na/z wartości bajtów.
publiczny statyczny końcowy FloatDataLayout < ShortDataBuffer > PŁYWACZ16 Układ danych do konwersji 16-bitowych półzmiennych na/z krótkich wartości.

Konstruktorzy publiczni

Metody publiczne

statyczny układ danych < Bufor danych <bajt[]>, ciąg>
ofStrings (zestaw znaków)
Tworzy układ danych do konwersji ciągów znaków na/z sekwencji bajtów.

Metody dziedziczone

Pola

publiczny statyczny końcowy FloatDataLayout < ShortDataBuffer > BFLOAT16

Układ danych do konwersji 16-bitowych wartości bfloat na/z krótkich wartości.

Ten format był kiedyś specyficzny dla TensorFlow, ale teraz został szerzej przyjęty w dziedzinie uczenia maszynowego. Jest zoptymalizowany pod kątem szybkiej konwersji za pomocą 32-bitowych zmiennoprzecinkowych punktów o pojedynczej precyzji poprzez proste przesunięcie ich wartości i obcięcie mantysy do zaledwie 7 bitów.

Dlatego jest to utrata precyzji w części ułamkowej w porównaniu ze specyfikacją zmiennoprzecinkową o połowie precyzji IEEE-754 (patrz FLOAT16 , ale ma większy zakres możliwych wartości w całej części, ponieważ zachowuje 8-bitowy wykładnik i wykorzystuje to samo odchylenie (tj. zakres bezwzględny powyżej 0 w przybliżeniu [10 -40 , 3,39 × 10 38 ]

Niektóre procesory obsługują natywnie format bfloat16 w celu zapewnienia lepszej wydajności.

publiczny statyczny końcowy BooleanDataLayout < ByteDataBuffer > BOOL

Układ danych do konwersji wartości logicznych na/z wartości bajtów.

Ponieważ nie ma bufora logicznego Java NIO, ten układ jest szczególnie przydatny do mapowania wartości boolowskich na standardowe bufory bajtowe. Konwersja między wartością logiczną a bajtem wymaga jawnego rzutowania typu.

publiczny statyczny końcowy FloatDataLayout < ShortDataBuffer > FLOAT16

Układ danych do konwersji 16-bitowych półzmiennych na/z krótkich wartości.

Połowy zmiennoprzecinkowe są przechowywane w pamięci zgodnie ze specyfikacją zmiennoprzecinkową o połowie precyzji IEEE-754 i są konwertowane do/z 32-bitowych zmiennoprzecinkowych w przestrzeni użytkownika.

Istnieje potencjalna utrata precyzji podczas konwersji pojedynczego elementu zmiennoprzecinkowego (32-bitowego) na połowę wartości zmiennoprzecinkowej (16-bitowa). Bezwzględny zakres wartości powyżej 0 dla połowy zmiennoprzecinkowej wynosi w przybliżeniu [5,96 × 10 -8 , 6,55 × 10 4 ], a ich część dziesiętna jest zaokrąglana w górę do 10-bitowej mantysy.

Ogólnie rzecz biorąc, obliczenia typu half-float działają lepiej na procesorach graficznych, ponieważ generalnie procesory nie obsługują natywnie tego formatu.

Konstruktorzy publiczni

publiczne DataLayouts ()

Metody publiczne

publiczny statyczny DataLayout < Bufor danych <bajt[]>, ciąg> ofStrings (zestaw znaków)

Tworzy układ danych do konwersji ciągów znaków na/z sekwencji bajtów.

Ten układ wymaga parametru charset in, aby określić, w jaki sposób ciągi muszą być kodowane/dekodowane jako sekwencje bajtów. Dlatego zawsze zwracana jest nowa instancja układu.

Parametry
zestaw znaków zestaw znaków do użycia
Zwroty
  • nowy układ ciągów