InterpreterApi

öffentliche Schnittstelle InterpreterApi
Bekannte indirekte Unterklassen

Schnittstelle zum TensorFlow Lite-Modellinterpreter, ausgenommen experimentelle Methoden.

Eine InterpreterApi-Instanz kapselt ein vortrainiertes TensorFlow Lite-Modell, in dem werden für die Modellinferenz ausgeführt.

Wenn ein Modell beispielsweise nur eine Eingabe annimmt und nur eine Ausgabe zurückgibt:

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

Wenn ein Modell mehrere Eingaben oder Ausgaben annimmt:

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);
 }
 

Wenn ein Modell Stringtensoren annimmt oder erzeugt:

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);
 }
 

Beachten Sie, dass es einen Unterschied zwischen Form [] und Form[1] gibt. Für skalaren String-Tensor Ausgaben:

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

Die Reihenfolge der Ein- und Ausgaben wird beim Konvertieren eines TensorFlow-Modells in TensorFlowLite festgelegt. mit Toco-Modell erstellen, sowie die Standardformen der Eingaben.

Wenn Eingaben als (multidimensionale) Arrays bereitgestellt werden, ergeben sich für die entsprechenden Eingabetensoren implizit an die Form dieses Arrays angepasst werden. Wenn Eingaben vom Typ Buffer bereitgestellt werden, wird keine implizite Größenänderung durchgeführt. Der Aufrufer muss sicherstellen, dass die Bytegröße Buffer entweder mit der des entsprechenden Tensors übereinstimmt oder dass sie zuerst die Größe des Tensors über resizeInput(int, int[]) ändern. Form und Typ von Tensor lassen sich verfügbar über die Klasse Tensor, verfügbar über getInputTensor(int) und getOutputTensor(int).

WARNUNG:InterpreterApi-Instanzen sind nicht threadsicher.

WARNUNG:Eine InterpreterApi-Instanz besitzt Ressourcen, die sein müssen durch Aufrufen von close() explizit freigegeben

Die TFLite-Bibliothek basiert auf NDK API 19. Es kann für Android API-Levels unter 19 funktionieren, aber nicht garantiert.

Verschachtelte Klassen

Klasse InterpreterApi.Options Eine Optionsklasse zur Steuerung des Laufzeitinterpreterverhaltens.

Public Methods

Abstrakt voidm
allocateTensors()
Aktualisiert bei Bedarf explizit Zuweisungen für alle Tensoren.
Abstrakt voidm
close()
Geben Sie Ressourcen frei, die mit der Instanz InterpreterApi verknüpft sind.
Statisch InterpreterApi
create(File modelFile, InterpreterApi.Options)
Erstellt eine InterpreterApi-Instanz mit dem angegebenen Modell und den angegebenen Optionen.
Statisch InterpreterApi
create(ByteBuffer byteBuffer, InterpreterApi.Options-Optionen)
Erstellt eine InterpreterApi-Instanz mit dem angegebenen Modell und den angegebenen Optionen.
Abstrakt Ganzzahl
getInputIndex(String opName)
Ruft den Index einer Eingabe anhand des Vorgangsnamens der Eingabe ab.
Abstrakt Tensor
getInputTensor(int inputIndex)
Ruft den Tensor ab, der dem bereitgestellten Eingabeindex zugeordnet ist.
Abstrakt Ganzzahl
getInputTensorCount()
Ruft die Anzahl der Eingabetensoren ab.
Abstrakt Lang
getLastNativeInferenceDurationNanoseconds()
Gibt das Timing der nativen Inferenz zurück.
Abstrakt Ganzzahl
getOutputIndex(String opName)
Ruft den Index einer Ausgabe anhand des Vorgangsnamens der Ausgabe ab.
Abstrakt Tensor
getOutputTensor(int-outputIndex)
Ruft den Tensor ab, der dem bereitgestellten Ausgabeindex zugeordnet ist.
Abstrakt