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(DataType dataType)
Crée un TensorBuffer dynamique vide avec un DataType spécifié.
TensorBuffer statique
createFixedSize(int[] shape, DataType)
Crée un TensorBuffer avec les éléments shape et DataType spécifiés.
TensorBuffer statique
createFrom(tampon TensorBuffer, type de données DataType)
Crée un TensorBuffer en copiant en profondeur des données à partir d'un autre, avec le DataType spécifié.
ByteBuffer
getBuffer()
Renvoie le tampon de données.
abstrait DataType
getDataType()
Renvoie le type de données de ce tampon.
int
getFlatSize()
Récupère la valeur flatSize du tampon.
abstrait float[]
getFloatArray()
Renvoie un tableau flottant des valeurs stockées dans ce tampon.
abstrait flottant
getFloatValue(int absIndex)
Renvoie une valeur flottante à un index donné.
abstrait int[]
getIntArray()
Renvoie un tableau entier des valeurs stockées dans ce tampon.
abstrait entier
getIntValue(int absIndex)
Renvoie une valeur entière pour un index donné.
int[]
getShape()
Récupère la forme actuelle.
abstrait entier
getTypeSize()
Renvoie le nombre d'octets d'un seul élément du tableau.
boolean
isDynamic()
Renvoie si la taille de l'élément TensorBuffer est dynamique (peut être redimensionnée de manière arbitraire).
abstrait vide
loadArray(int[] src, int[] shape)
Charge un tableau entier dans ce tampon avec une forme spécifique.
abstrait vide
loadArray(float[] src, forme int[])
Charge un tableau float dans ce tampon avec une forme spécifique.
void
loadArray(float[] src)
Charge un tableau float dans ce tampon.
void
loadArray(int[] src)
Charge un tableau entier dans ce tampon.
void
loadBuffer(tampon ByteBuffer)
Charge un tampon d'octets dans ce TensorBuffer.
void
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 un DataType spécifié. La forme du TensorBuffer créé est {0}.

Dynamic TensorBuffers réaffecte la mémoire lors du chargement de tableaux ou de tampons de données de tailles de tampon différentes. 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
dataType DataType du TensorBuffer à créer.

public statique TensorBuffer createFixedSize (int[] shape, DataType dataType)

Crée un TensorBuffer avec les éléments 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);
 

Une fois créé, la taille d'un TensorBuffer de taille fixe ne peut pas être modifiée.

Paramètres
shape Forme de l'élément TensorBuffer à créer.
dataType DataType du TensorBuffer à créer.
Génère
NullPointerException si shape est nul.
IllegalArgumentException Si shape comporte des éléments non positifs.

public statique TensorBuffer createFrom (tampon TensorBuffer, type de données DataType)

Crée un TensorBuffer en copiant en profondeur des données à partir d'un autre, avec le DataType spécifié.

Paramètres
mise en mémoire tampon TensorBuffer source à partir de laquelle effectuer la copie.
dataType DataType attendu pour le TensorBuffer nouvellement créé.
Génère
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 ()

Récupère la valeur flatSize du tampon.

Génère
IllegalStateException si les données sous-jacentes sont corrompues

public abstract float[] getFloatArray ()

Renvoie un tableau flottant des valeurs stockées dans ce tampon. Si le tampon n'est pas de type float, les valeurs sont converties en valeurs flottantes. Par exemple, les valeurs de TensorBufferUint8 seront converties de uint8 en valeurs float.

public abstrait float getFloatValue (int absIndex)

Renvoie une valeur flottante à un index donné. Si le tampon n'est pas de type float, la valeur sera convertie en float. Par exemple, lors de la lecture d'une valeur à partir de TensorBufferUint8, la valeur est d'abord lue à voix haute en tant que uint8, puis convertie de uint8 en valeur flottante.

 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 Index absolu de la valeur à lire.

public abstract int[] getIntArray ()

Renvoie un tableau entier des valeurs stockées dans ce tampon. Si le type de tampon est différent de celui de int, les valeurs sont converties en int, ce qui peut entraîner une perte de précision. Par exemple, si vous extrayez un tableau entier à partir d'un TensorBufferFloat avec les valeurs {400.32f, 23.04f}, la sortie est {400, 23}.

public abstract int getIntValue (int absIndex)

Renvoie une valeur entière pour un index donné. Si le tampon n'est pas de type int, la valeur est convertie en entier. Par exemple, lors de la lecture d'une valeur à partir de TensorBufferFloat, la valeur est d'abord lue comme float, puis convertie de float à 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 Index absolu de la valeur à lire.

public int[] getShape ()

Récupère la forme actuelle. (une copie est renvoyée ici pour éviter toute modification inattendue.)

Génère
IllegalStateException si les données sous-jacentes sont corrompues

public abstract int getTypeSize ()

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

public boolean isDynamic ()

Renvoie si la taille de l'élément TensorBuffer est dynamique (peut être redimensionnée de manière arbitraire).

public abstrait vide loadArray (int[] src, int[] shape)

Charge un tableau entier dans ce tampon avec une forme spécifique. Si le tampon n'est pas de type int, les valeurs sont converties dans le type du tampon avant d'être chargées dans le tampon, ce qui peut entraîner une perte de précision. Par exemple, si vous chargez un tableau d'entiers avec des valeurs {400, -23} dans un élément TensorBufferUint8, ces valeurs seront limitées à [0, 255], puis converties en uint8 par {255, 0}.

Paramètres
src Tableau source à charger.
shape Forme du Tensor que src représente.
Génère
NullPointerException si src est nul.
NullPointerException si shape est nul.
IllegalArgumentException Si la taille du tableau à charger ne correspond pas à la forme spécifiée.

public abstrait vide loadArray (float[] src, int[] shape)

Charge un tableau float dans ce tampon avec une forme spécifique. Si le tampon n'est pas de type float, les valeurs sont converties dans le type du tampon avant d'être chargées dans le tampon, ce qui peut entraîner une perte de précision. Par exemple, si vous chargez un tableau de valeurs flottantes dans un TensorBufferUint8 avec des valeurs {400.32f, -23.04f}, celles-ci seront limitées à [0, 255], puis converties en uint8 par {255, 0}.

Paramètres
src Tableau source à charger.
shape Forme du Tensor que src représente.
Génère
NullPointerException si src est nul.
NullPointerException si shape est nul.
IllegalArgumentException 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 n'est pas de type float, les valeurs sont converties dans le type du tampon avant d'être chargées dans le tampon, ce qui peut entraîner une perte de précision. Par exemple, si vous chargez un tableau de valeurs flottantes dans un TensorBufferUint8 avec les valeurs {400.32f, -23.04f}, celles-ci 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 identique à celle de ce TensorBuffer. Ainsi, la taille de buffer (src.length) doit toujours correspondre à la taille plate de ce TensorBuffer, qu'il s'agisse de TensorBuffer de taille fixe ou dynamique. Utilisez loadArray(float[], int[]) si src a une forme différente.

Paramètres
src Tableau source à charger.

public vide loadArray (int[] src)

Charge un tableau entier dans ce tampon. Si le tampon n'est pas de type int, les valeurs sont converties dans le type du tampon avant d'être chargées dans le tampon, ce qui peut entraîner une perte de précision. Par exemple, si vous chargez un tableau d'entiers avec des valeurs {400, -23} dans un élément TensorBufferUint8, ces 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 identique à celle de ce TensorBuffer. Ainsi, la taille de buffer (src.length) doit toujours correspondre à la taille plate de ce TensorBuffer, qu'il s'agisse de TensorBuffer de taille fixe ou dynamique. Utilisez loadArray(int[], int[]) si src a une forme différente.

Paramètres
src Tableau source à charger.

public vide loadBuffer (ByteBuffer tampon)

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 de buffer est identique à celle de ce TensorBuffer. Ainsi, la taille de buffer (buffer.limit()) doit toujours correspondre à la taille plate de ce TensorBuffer, qu'il s'agisse de TensorBuffer de taille fixe ou 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 problèmes de performances, mais si une modification est nécessaire, veuillez en faire une copie.

Pour des performances optimales, chargez toujours un ByteBuffer direct ou un ByteBuffer reposant sur un tableau.

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

Paramètres
mise en mémoire tampon Tampon d'octets à charger.

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

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 problèmes de performances, mais si une modification est nécessaire, veuillez en faire une copie.

Pour des performances optimales, chargez toujours un ByteBuffer direct ou un ByteBuffer reposant sur un tableau.

Paramètres
mise en mémoire tampon Tampon d'octets à charger.
shape
Génère
NullPointerException si buffer est nul.
IllegalArgumentException si les tailles de buffer et de typeSize ne correspondent pas ou si celles de buffer et de flatSize ne correspondent pas.