InterpreterApi

interface pública InterpreterApi
Subclasses indiretas conhecidas

Interface para o interpretador de modelos do TensorFlow Lite, exceto métodos experimentais.

Uma instância InterpreterApi encapsula um modelo pré-treinado do TensorFlow Lite, em que operações são executadas para inferência de modelos.

Por exemplo, se um modelo usa apenas uma entrada e retorna apenas uma saída:

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

Se um modelo usa várias entradas ou saídas:

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 um modelo usa ou produz tensores de string:

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

Há uma distinção entre formato [] e forma[1]. Para tensor de string escalar saídas:

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

As ordens de entradas e saídas são determinadas ao converter o modelo do TensorFlow para o TensorFlowLite com o Toco, assim como as formas padrão das entradas.

Quando as entradas são fornecidas como matrizes (multidimensionais), os tensores de entrada correspondentes ser redimensionadas implicitamente de acordo com a forma dessa matriz. Quando as entradas são fornecidas como tipos Buffer, nenhum redimensionamento implícito é feito. o autor da chamada precisa garantir que o tamanho de byte Buffer corresponda ao do tensor correspondente ou que primeiro redimensione o tensor com resizeInput(int, int[]). As informações de tipo e formato do tensor podem ser extraído pela classe Tensor, disponível via getInputTensor(int) e getOutputTensor(int).

AVISO:as instâncias de InterpreterApi não são seguras para linhas de execução.

AVISO:uma instância do InterpreterApi tem recursos que precisam ser explicitamente liberado ao invocar close()

A biblioteca TFLite foi criada com a API NDK 19. Pode funcionar para APIs do Android de níveis anteriores ao 19. mas isso não é garantido.

Classes aninhadas

classe InterpreterApi.Options Uma classe de opções para controlar o comportamento do interpretador em tempo de execução.

Métodos públicos

abstrato anular
allocateTensors()
Atualiza explicitamente as alocações de todos os tensores, se necessário.
abstrato anular
close()
Liberar recursos associados à instância InterpreterApi.
estática InterpreterApi
create(opções de Arquivo modelFile, InterpreterApi.Options)
Cria uma instância de InterpreterApi usando o modelo e as opções especificados.
estática InterpreterApi
create(byteBuffer do ByteBuffer, opções InterpreterApi.Options)
Cria uma instância de InterpreterApi usando o modelo e as opções especificados.
abstrato int.
getInputIndex(String opName)
Recebe o índice de uma entrada conforme o nome da operação.
abstrato Tensor
getInputTensor(int inputIndex)
Recebe o tensor associado ao índice de entrada fornecido.
abstrato int.
getInputTensorCount()
Recebe o número de tensores de entrada.
abstrato Longo
getLastNativeInferenceDurationNanoseconds()
Retorna o tempo de inferência nativa.
abstrato int.
getOutputIndex(String opName)
Recebe o índice de uma saída, de acordo com o nome da operação.
abstrato Tensor
getOutputTensor(int outputIndex)
Recebe o tensor associado ao índice de saída fornecido.
abstrato int.
getOutputTensorCount()
Recebe o número de tensores de saída.
abstrato anular