Expose les instances DataLayout
de formats de données fréquemment utilisés dans le calcul d'algèbre linéaire.
Exemple d'utilisation :
// 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());
Champs
public statique final FloatDataLayout < ShortDataBuffer > | BFLOAT16 | Disposition des données pour convertir des bfloats 16 bits vers/depuis des valeurs courtes. |
public statique final BooleanDataLayout < ByteDataBuffer > | BOOL | Disposition des données pour convertir des booléens vers/depuis des valeurs d'octet. |
public statique final FloatDataLayout < ShortDataBuffer > | FLOTTEUR16 | Disposition des données pour convertir des demi-flottants 16 bits vers/depuis des valeurs courtes. |
Constructeurs Publics
Méthodes publiques
DataLayout statique < DataBuffer <byte[]>, String> | ofStrings (jeu de caractères Charset) Crée une disposition des données pour convertir des chaînes vers/depuis des séquences d'octets. |
Méthodes héritées
Champs
public statique final FloatDataLayout < ShortDataBuffer > BFLOAT16
Disposition des données pour convertir des bfloats 16 bits vers/depuis des valeurs courtes.
Ce format était autrefois spécifique à TensorFlow mais est désormais adopté plus largement dans le domaine du machine learning. Il est optimisé pour une conversion rapide avec des virgules flottantes 32 bits simple précision en décalant simplement leur valeur et en tronquant la mantisse à seulement 7 bits.
Par conséquent, il s'agit d'une perte de précision dans la partie fractionnaire par rapport à la spécification à virgule flottante demi-précision IEEE-754 (voir FLOAT16
mais elle a une plus grande plage de valeurs possibles dans la partie entière car elle préserve l'exposant 8 bits et utilise le même biais (c'est-à-dire une plage absolue supérieure à 0 d'environ [10 -40 , 3,39 × 10 38 ]
Certains CPU supportent nativement le format bfloat16 pour de meilleures performances.
public static final BooleanDataLayout < ByteDataBuffer > BOOL
Disposition des données pour convertir des booléens vers/depuis des valeurs d'octets.
Puisqu'il n'y a pas de tampon booléen Java NIO, cette disposition est particulièrement utile pour mapper les valeurs booléennes aux tampons d'octets standard. La conversion entre un booléen et un octet nécessite un transtypage de type explicite.
public statique final FloatDataLayout < ShortDataBuffer > FLOAT16
Disposition des données pour convertir des demi-flottants 16 bits vers/depuis des valeurs courtes.
Les demi-flottants sont stockés en mémoire conformément à la spécification de virgule flottante demi-précision IEEE-754 et sont convertis vers/depuis des flottants 32 bits dans l'espace utilisateur.
Il existe une perte potentielle de précision lors de la conversion d'un seul flottant (32 bits) en un demi-flottant (16 bits). La plage absolue des valeurs supérieures à 0 pour un demi-flotteur est d'environ [5,96 × 10 -8 , 6,55 × 10 4 ] et leur partie décimale est arrondie à une mantisse de 10 bits.
En général, le calcul semi-flottant fonctionne mieux sur les GPU puisque, en général, les CPU ne prennent pas en charge ce format de manière native.
Constructeurs Publics
Layouts de données publics ()
Méthodes publiques
public static DataLayout < DataBuffer <byte[]>, String> ofStrings (Charset charset)
Crée une disposition des données pour convertir des chaînes vers/depuis des séquences d'octets.
Cette disposition nécessite un charset
en paramètre pour spécifier comment les chaînes doivent être codées/décodées sous forme de séquences d'octets. Ainsi, une nouvelle instance de mise en page est toujours renvoyée.
Paramètres
jeu de caractères | jeu de caractères à utiliser |
---|
Retours
- une nouvelle disposition des chaînes