InterpreterApi

interface publique InterpreterApi
Sous-classes indirectes connues

Interface vers l'interpréteur de modèle TensorFlow Lite, à l'exclusion des méthodes expérimentales.

Une instance InterpreterApi encapsule un modèle TensorFlow Lite pré-entraîné, dans lequel sont exécutées pour l'inférence de modèle.

Par exemple, si un modèle n'accepte qu'une seule entrée et ne renvoie qu'une seule sortie:

try (InterpreterApi interpreter =
     new InterpreterApi.create(file_of_a_tensorflowlite_model)) {
   interpreter.run(input, output);
 }
 

Si un modèle accepte plusieurs entrées ou sorties:

Object[] inputs = {input0, input1, ...};
 Map<Integer, Object> map_of_indices_to_outputs = new HashMap<>();
 FloatBuffer ith_output = FloatBuffer.allocateDirect(3 * 2 * 4);  // Float tensor, shape 3x2x4.
 ith_output.order(ByteOrder.nativeOrder());
 map_of_indices_to_outputs.put(i, ith_output);
 try (InterpreterApi interpreter =
     new InterpreterApi.create(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(inputs, map_of_indices_to_outputs);
 }
 

Si un modèle accepte ou produit des Tensors de chaîne:

String[] input = {"foo", "bar"};  // Input tensor shape is [2].
 String[][] output = new String[3][2];  // Output tensor shape is [3, 2].
 try (InterpreterApi interpreter =
     new InterpreterApi.create(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(input, output);
 }
 

Notez qu'il existe une distinction entre les formes [] et shape[1]. Pour Tensor de chaîne scalaire résultats:

String[] input = {"foo"};  // Input tensor shape is [1].
 ByteBuffer outputBuffer = ByteBuffer.allocate(OUTPUT_BYTES_SIZE);  // Output tensor shape is [].
 try (Interpreter interpreter = new Interpreter(file_of_a_tensorflowlite_model)) {
   interpreter.runForMultipleInputsOutputs(input, outputBuffer);
 }
 byte[] outputBytes = new byte[outputBuffer.remaining()];
 outputBuffer.get(outputBytes);
 // Below, the `charset` can be StandardCharsets.UTF_8.
 String output = new String(outputBytes, charset);
 

L'ordre des entrées et des sorties est déterminé lors de la conversion du modèle TensorFlow en TensorFlow Lite avec Toco, tout comme les formes par défaut des entrées.

Lorsque les entrées sont fournies sous forme de tableaux (multidimensionnels), le ou les Tensors d'entrée correspondants être implicitement redimensionné en fonction de la forme de ce tableau. Lorsque les entrées sont fournies en tant que types Buffer, aucun redimensionnement implicite n'est effectué. l'appelant doit s'assurer que la taille en octets Buffer correspond soit à celle du Tensor correspondant, soit à la première redimensionner le Tensor via resizeInput(int, int[]). Les informations sur la forme et le type de Tensor peuvent obtenu via la classe Tensor, disponible via getInputTensor(int) et getOutputTensor(int).

AVERTISSEMENT:InterpreterApi instances ne sont pas sécurisées.

AVERTISSEMENT:Une instance InterpreterApi possède des ressources qui doivent être explicitement libérées en appelant close()

La bibliothèque TFLite est basée sur l'API 19 du NDK. Cela peut fonctionner pour les niveaux d'API Android inférieurs à 19, mais ce n'est pas garanti.

Classes imbriquées

classe InterpreterApi.Options Classe d'options permettant de contrôler le comportement de l'interpréteur lors de l'exécution.

Méthodes publiques

abstrait vide
allocateTensors()
Met à jour explicitement les allocations pour tous les Tensors, si nécessaire.
abstrait vide
close()
Libérez les ressources associées à l'instance InterpreterApi.
statique InterpreterApi
create(options File modelFile, InterpreterApi.Options)
Construit une instance InterpreterApi à l'aide du modèle et des options spécifiés.
statique InterpreterApi
create(options byteBuffer ByteBuffer, InterpreterApi.Options)
Construit une instance InterpreterApi à l'aide du modèle et des options spécifiés.
abstrait entier
getInputIndex(Chaîne opName)
Récupère l'index d'une entrée en fonction du nom d'opération de l'entrée.
abstrait Tensor
getInputTensor(int inputIndex)
Récupère le Tensor associé à l'index d'entrée fourni.
abstrait entier
getInputTensorCount()
Récupère le nombre de Tensors d'entrée.
abstrait Version longue
getLastNativeInferenceDurationNanoseconds()
Renvoie la durée d'inférence native.
abstrait entier
getOutputIndex(Chaîne opName)
Récupère l'index d'une sortie en fonction du nom d'opération de la sortie.
abstrait Tensor
getOutputTensor(int outputIndex)
Récupère le Tensor associé à l'index de sortie fourni.
abstrait entier
getOutputTensorCount()
Récupère le nombre de Tensors de sortie.
abstrait vide
resizeInput(int idx, int[] dims, boolean strict)
Redimensionne l'entrée IDx-ième du modèle natif en fonction des assombrissements donnés.
abstrait vide
resizeInput(int idx, int[] dims)
Redimensionne l'entrée IDx-ième du modèle natif en fonction des assombrissements donnés.
abstrait vide
run(entrée d'objet, sortie d'objet)
Exécute l'inférence de modèle si le modèle n'accepte qu'une seule entrée et ne fournit qu'une seule sortie.
abstrait vide