InterpreterApi

interfaccia pubblica InterpreterApi
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
getInputIndex(Stringa opName)
Ottiene l'indice di un input dato il nome dell'operazione dell'input.
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