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