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