Interpreter

public final class Interprète

Classe pilote permettant de piloter l'inférence de modèle avec TensorFlow Lite.

Remarque: Si vous n'avez besoin d'accéder à aucune des fonctionnalités fonctionnalités de l'API ci-dessous, utilisez plutôt InterpreterApi et InterpreterFactory au lieu d'utiliser directement Interpreter.

Un Interpreter encapsule un modèle TensorFlow Lite pré-entraîné, dans lequel les opérations sont exécutés 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 (Interpreter interpreter = new Interpreter(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 (Interpreter interpreter = new Interpreter(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 (Interpreter interpreter = new Interpreter(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 Buffer aucun redimensionnement implicite n'est effectué. l'appelant doit s'assurer que la taille d'octets de Buffer soit correspond à celui du Tensor correspondant, soit il redimensionne d'abord le Tensor via resizeInput(int, int[]). Vous pouvez obtenir des informations sur la forme et le type de Tensor via la classe Tensor, disponible via getInputTensor(int) et getOutputTensor(int).

AVERTISSEMENT:Interpreter instances ne sont pas sécurisées. Interpreter 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 Interpreter.Options Classe d'options permettant de contrôler le comportement de l'interpréteur lors de l'exécution.

Constructeurs publics

Interpréteur(fichier modelFile)
Initialise un Interpreter.
Interpreter(options File modelFile, Interpreter.Options)
Initialise un Interpreter et spécifie les options pour personnaliser le comportement de l'interpréteur.
Interpréteur(byteBuffer ByteBuffer)
Initialise un Interpreter avec l'élément ByteBuffer d'un fichier de modèle.
Interpreter(byteBuffer ByteBuffer, options Interpreter.Options)
Initialise un Interpreter avec le ByteBuffer d'un fichier de modèle et un ensemble de Interpreter.Options personnalisé.

Méthodes publiques

vide
allocateTensors()
Met à jour explicitement les allocations pour tous les Tensors, si nécessaire.
vide
close()
Libérez les ressources associées à l'instance InterpreterApi.
int
getInputIndex(Chaîne opName)
Récupère l'index d'une entrée en fonction du nom d'opération de l'entrée.
Tensor
getInputTensor(int inputIndex)
Récupère le Tensor associé à l'index d'entrée fourni.
int
getInputTensorCount()
Récupère le nombre de Tensors d'entrée.
Tensor
getInputTensorFromSignature(String inputName, String signatureKey)
Récupère le Tensor associé au nom d'entrée et au nom de la méthode de signature fournis.
Long
getLastNativeInferenceDurationNanoseconds()
Renvoie la durée d'inférence native.
int
getOutputIndex(Chaîne opName)
Récupère l'index d'une sortie en fonction du nom d'opération de la sortie.
Tensor
getOutputTensor(int outputIndex)
Récupère le Tensor associé à l'index de sortie fourni.
int
getOutputTensorCount()
Récupère le nombre de Tensors de sortie.
Tensor
getOutputTensorFromSignature(String outputName, String signatureKey)
Récupère le Tensor associé au nom de sortie fourni dans une méthode de signature spécifique.