TensorBuffer

classe abstraite publique TensorBuffer
Sous-classes directes connues

Représente le tampon de données pour l'entrée ou la sortie d'un modèle.

Méthodes publiques

TensorBuffer statique
createDynamic (Type de donnéesType de données )
Crée un TensorBuffer dynamique vide avec DataType spécifié.
TensorBuffer statique
createFixedSize (forme int[], DataType dataType)
Crée un TensorBuffer avec shape et DataType spécifiés.
TensorBuffer statique
createFrom (tampon TensorBuffer , DataType dataType)
Crée un TensorBuffer copiant en profondeur les données d'un autre, avec DataType spécifié.
OctetBuffer
getBuffer ()
Renvoie le tampon de données.
Type de données abstrait
getDataType ()
Renvoie le type de données de ce tampon.
int
getFlatSize ()
Obtient la taille plate du tampon.
flotteur abstrait[]
obtenirFloatArray ()
Renvoie un tableau flottant des valeurs stockées dans ce tampon.
flotteur abstrait
getFloatValue (int absIndex)
Renvoie une valeur flottante à un index donné.
abstrait int[]
getIntArray ()
Renvoie un tableau int des valeurs stockées dans ce tampon.
abstrait entier
getIntValue (int absIndex)
Renvoie une valeur int à un index donné.
int[]
obtenirForme ()
Obtient la forme actuelle.
abstrait entier
getTypeSize ()
Renvoie le nombre d'octets d'un seul élément du tableau.
booléen
estDynamique ()
Renvoie si le TensorBuffer est de taille dynamique (peut être redimensionné arbitrairement).
vide abstrait
loadArray (int[] src, forme int[])
Charge un tableau int dans ce tampon avec une forme spécifique.
vide abstrait
loadArray (float[] src, forme int[])
Charge un tableau float dans ce tampon avec une forme spécifique.
vide
loadArray (float[] src)
Charge un tableau float dans ce tampon.
vide
loadArray (int[] src)
Charge un tableau int dans ce tampon.
vide
loadBuffer ( tampon ByteBuffer )
Charge un tampon d'octets dans ce TensorBuffer .
vide
loadBuffer (tampon ByteBuffer , forme int[])
Charge un tampon d'octets dans ce TensorBuffer avec une forme spécifique.

Méthodes héritées

Méthodes publiques

public statique TensorBuffer createDynamic ( DataType dataType)

Crée un TensorBuffer dynamique vide avec DataType spécifié. La forme du TensorBuffer créé est {0}.

Dynamic TensorBuffers réallouera la mémoire lors du chargement de tableaux ou de tampons de données de différentes tailles de tampon. Voici quelques exemples :

 // 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.
 

Paramètres
Type de données Le dataType du TensorBuffer à créer.

public static TensorBuffer createFixedSize (forme int[], DataType dataType)

Crée un TensorBuffer avec shape et DataType spécifiés. Voici quelques exemples :

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

La taille d'un TensorBuffer de taille fixe ne peut pas être modifiée une fois qu'il est créé.

Paramètres
forme La forme du TensorBuffer à créer.
Type de données Le dataType du TensorBuffer à créer.
Jetés
NullPointerException si shape est nulle.
Exception d'argument illégal si shape contient des éléments non positifs.

public static TensorBuffer createFrom (Tampon TensorBuffer , DataType dataType)

Crée un TensorBuffer copiant en profondeur les données d'un autre, avec DataType spécifié.

Paramètres
tampon la source TensorBuffer à partir de laquelle copier.
Type de données le DataType attendu du TensorBuffer nouvellement créé.
Jetés
NullPointerException si buffer est nul.

public ByteBuffer getBuffer ()

Renvoie le tampon de données.

public abstrait DataType getDataType ()

Renvoie le type de données de ce tampon.

public int getFlatSize ()

Obtient la taille plate du tampon.

Jetés
IllegalStateException si les données sous-jacentes sont corrompues

public abstrait float[] getFloatArray ()

Renvoie un tableau flottant des valeurs stockées dans ce tampon. Si le tampon est de types différents de float, les valeurs seront converties en float. Par exemple, les valeurs de TensorBufferUint8 seront converties de uint8 en float.

public abstrait float getFloatValue (int absIndex)

Renvoie une valeur flottante à un index donné. Si le tampon est de types différents de float, la valeur sera convertie en float. Par exemple, lors de la lecture d'une valeur à partir de TensorBufferUint8 , la valeur sera d'abord lue sous la forme uint8, puis sera convertie de uint8 en 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);
 

Paramètres
absIndex L'indice absolu de la valeur à lire.

public abstrait int[] getIntArray ()

Renvoie un tableau int des valeurs stockées dans ce tampon. Si le tampon est d'un type différent de int, les valeurs seront converties en int et une perte de précision peut s'appliquer. Par exemple, en obtenant un tableau int à partir d'un TensorBufferFloat avec les valeurs {400.32f, 23.04f}, le résultat est {400, 23}.

public abstrait int getIntValue (int absIndex)

Renvoie une valeur int à un index donné. Si le tampon est de types différents de int, la valeur sera convertie en int. Par exemple, lors de la lecture d'une valeur à partir de TensorBufferFloat , la valeur sera d'abord lue sous forme de float, puis sera convertie de float en int. Une perte de précision peut s'appliquer.

 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.
 

Paramètres
absIndex L'indice absolu de la valeur à lire.

public int[] getShape ()

Obtient la forme actuelle. (renvoyer une copie ici pour éviter toute modification inattendue.)

Jetés
IllegalStateException si les données sous-jacentes sont corrompues

public abstrait int getTypeSize ()

Renvoie le nombre d'octets d'un seul élément du tableau. Par exemple, un tampon flottant renverra 4 et un tampon d'octets renverra 1.

public booléen isDynamic ()

Renvoie si le TensorBuffer est de taille dynamique (peut être redimensionné arbitrairement).

public abstract void loadArray (int[] src, int[] forme)

Charge un tableau int dans ce tampon avec une forme spécifique. Si le tampon est de type différent de int, les valeurs seront converties dans le type du tampon avant d'être chargées dans le tampon, et une perte de précision peut s'appliquer. Par exemple, en chargeant un tableau int avec des valeurs {400, -23} dans un TensorBufferUint8 , les valeurs seront limitées à [0, 255] puis converties en uint8 par {255, 0}.

Paramètres
src Le tableau source à charger.
forme Forme du tenseur représenté par src .
Jetés
NullPointerException si src est nul.
NullPointerException si shape est nulle.
Exception d'argument illégal si la taille du tableau à charger ne correspond pas à la forme spécifiée.

public abstract void loadArray (float[] src, int[] forme)

Charge un tableau float dans ce tampon avec une forme spécifique. Si le tampon est d'un type différent de celui de float, les valeurs seront converties dans le type du tampon avant d'être chargées dans le tampon, et une perte de précision peut s'appliquer. Par exemple, en chargeant un tableau float dans un TensorBufferUint8 avec des valeurs {400.32f, -23.04f}, les valeurs seront limitées à [0, 255] puis converties en uint8 par {255, 0}.

Paramètres
src Le tableau source à charger.
forme Forme du tenseur représenté par src .
Jetés
NullPointerException si src est nul.
NullPointerException si shape est nulle.
Exception d'argument illégal si la taille du tableau à charger ne correspond pas à la forme spécifiée.

public void loadArray (float[] src)

Charge un tableau float dans ce tampon. Si le tampon est d'un type différent de celui de float, les valeurs seront converties dans le type du tampon avant d'être chargées dans le tampon, et une perte de précision peut s'appliquer. Par exemple, en chargeant un tableau float dans un TensorBufferUint8 avec des valeurs {400.32f, -23.04f}, les valeurs seront limitées à [0, 255] puis converties en uint8 par {255, 0}.

L'utilisation de cette méthode suppose que la forme de src est la même que la forme de ce TensorBuffer . Ainsi, la taille du buffer ( src.length ) doit toujours correspondre à la taille plate de ce TensorBuffer , pour TensorBuffer de taille fixe et dynamique. Utilisez loadArray(float[], int[]) si src a une forme différente.

Paramètres
src Le tableau source à charger.

public void loadArray (int[] src)

Charge un tableau int dans ce tampon. Si le tampon est de type différent de int, les valeurs seront converties dans le type du tampon avant d'être chargées dans le tampon, et une perte de précision peut s'appliquer. Par exemple, en chargeant un tableau int avec des valeurs {400, -23} dans un TensorBufferUint8 , les valeurs seront limitées à [0, 255] puis converties en uint8 par {255, 0}.

L'utilisation de cette méthode suppose que la forme de src est la même que la forme de ce TensorBuffer . Ainsi, la taille du buffer ( src.length ) doit toujours correspondre à la taille plate de ce TensorBuffer , pour TensorBuffer de taille fixe et dynamique. Utilisez loadArray(int[], int[]) si src a une forme différente.

Paramètres
src Le tableau source à charger.

public void loadBuffer (tampon ByteBuffer )

Charge un tampon d'octets dans ce TensorBuffer . La taille du tampon doit correspondre à la taille plate de ce TensorBuffer .

L'utilisation de cette méthode suppose que la forme du buffer est la même que la forme de ce TensorBuffer . Ainsi, la taille du buffer ( buffer.limit() ) doit toujours correspondre à la taille plate de ce TensorBuffer , pour TensorBuffer de taille fixe et dynamique. Utilisez loadBuffer(ByteBuffer, int[]) si buffer a une forme différente.

Important : Le tampon chargé est une référence. NE PAS MODIFIER. Nous ne créons pas de copie ici pour des raisons de performances, mais si une modification est nécessaire, veuillez en faire une copie.

Pour de meilleures performances, chargez toujours un ByteBuffer direct ou un ByteBuffer soutenu par un tableau.

Si le buffer est en lecture seule, nous adoptons une stratégie de copie sur écriture pour les performances.

Paramètres
tampon Le tampon d’octets à charger.

public void loadBuffer (tampon ByteBuffer , forme int[])

Charge un tampon d'octets dans ce TensorBuffer avec une forme spécifique.

Important : Le tampon chargé est une référence. NE PAS MODIFIER. Nous ne créons pas de copie ici pour des raisons de performances, mais si une modification est nécessaire, veuillez en faire une copie.

Pour de meilleures performances, chargez toujours un ByteBuffer direct ou un ByteBuffer soutenu par un tableau.

Paramètres
tampon Le tampon d’octets à charger.
forme
Jetés
NullPointerException si buffer est nul.
Exception d'argument illégal si la taille de buffer et typeSize ne correspondent pas ou si la taille de buffer et flatSize ne correspondent pas.