Sottoclassi indirette note |
Interfaccia con l'interprete di modelli TensorFlow Lite, esclusi i metodi sperimentali.
Un'istanza InterpreterApi
incapsula un modello TensorFlow Lite preaddestrato, in cui
vengono eseguite per l'inferenza del modello.
Ad esempio, se un modello accetta un solo input e restituisce solo un output:
try (InterpreterApi interpreter =
new InterpreterApi.create(file_of_a_tensorflowlite_model)) {
interpreter.run(input, output);
}
Se un modello accetta più input o output:
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);
}
Se un modello prende o produce tensori di stringa:
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);
}
Tieni presente che esiste una distinzione tra forma [] e forma[1]. Per tensori di stringa scalare genera:
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);
Gli ordini di input e output vengono determinati durante la conversione del modello TensorFlow in TensorFlowLite modello con Toco, così come le forme predefinite degli input.
Quando gli input vengono forniti come array (multidimensionali), i tensori di input corrispondenti
ridimensionato implicitamente in base alla forma dell'array. Quando gli input vengono forniti come tipi Buffer
, non viene eseguito il ridimensionamento implicito. il chiamante deve assicurarsi che la dimensione in byte di Buffer
corrisponda a quella del tensore corrispondente o che
ridimensiona il tensore tramite resizeInput(int, int[])
. Le informazioni su forma e tipo di tensore possono essere
ottenuti tramite il corso Tensor
, disponibile tramite getInputTensor(int)
e getOutputTensor(int)
.
ATTENZIONE:InterpreterApi
istanze non sono sicure per i thread.
AVVISO: un'istanza InterpreterApi
possiede risorse che devono essere
liberati esplicitamente richiamando close()
La libreria TFLite è basata sull'API NDK 19. Può funzionare con livelli API Android inferiori a 19, ma non è garantito.
Classi nidificate
classe | InterpreterApi.Options | Una classe di opzioni per controllare il comportamento dell'interprete di runtime. |
Metodi pubblici
astratto null |
allocateTensors()
Aggiorna in modo esplicito le allocazioni per tutti i tensori, se necessario.
|
astratto null |
close()
Rilascia le risorse associate all'istanza
InterpreterApi . |
statico InterpreterApi |
create(opzioni File modelFile, InterpreterApi.Options)
Crea un'istanza
InterpreterApi utilizzando il modello e le opzioni specificati. |
statico InterpreterApi |
create(opzioni ByteBuffer byteBuffer, InterpreterApi.Options)
Crea un'istanza
InterpreterApi utilizzando il modello e le opzioni specificati. |
astratto int | |
astratto Tensor |
getInputTensor(int inputIndex)
Recupera il Tensor associato all'indice di input fornito.
|
astratto int |
getInputTensorCount()
Restituisce il numero di tensori di input.
|
astratto Lungo |
getLastNativeInferenceDurationNanoseconds()
Restituisce i tempi di inferenza nativa.
|
astratto int |
getOutputIndex(Stringa opName)
Ottiene l'indice di un output dato il nome dell'operazione dell'output.
|
astratto Tensor |
getOutputTensor(int outputIndex)
Recupera il Tensor associato all'indice di output fornito.
|
astratto int |
getOutputTensorCount()
Ottiene il numero di tensori di output.
|
astratto null |
resizeInput(int idx, int[] dims, boolean strict)
Ridimensiona l'input idx-th del modello nativo alle dimensioni specificate.
|
astratto null |
resizeInput(int idx, int[] dims)
Ridimensiona l'input idx-th del modello nativo alle dimensioni specificate.
|
astratto null |