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