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 | |
TensorBuffer statique |
createFixedSize(int[] shape, DataType)
|
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 | |
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 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.
|