DataLayouts

classe finale publique DataLayouts

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

Des 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

Des 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'octet.

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
Retour
  • une nouvelle disposition des chaînes