InterpreterApi

interfaz pública InterpreterApi
Subcategorías indirectas conocidas

Interfaz para el intérprete de modelo de TensorFlow Lite, excepto los métodos experimentales.

Una instancia InterpreterApi encapsula un modelo de TensorFlow Lite previamente entrenado, en el que se ejecutan para la inferencia de modelos.

Por ejemplo, si un modelo toma solo una entrada y devuelve solo una salida:

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

Si un modelo toma varias entradas o salidas:

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

Si un modelo toma o produce tensores de cadenas, sucede lo siguiente:

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

Ten en cuenta que hay una distinción entre forma [] y forma[1]. Para tensor de string escalar resultados:

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

Los pedidos de entradas y salidas se determinan cuando se convierte el modelo de TensorFlow a TensorFlowLite con Toco, al igual que las formas predeterminadas de las entradas.

Cuando las entradas se proporcionan como arrays (multidimensionales), los tensores de entrada correspondientes de forma implícita según la forma del array. Cuando las entradas se proporcionan como tipos Buffer, no se realiza ningún cambio de tamaño implícito. el llamador debe asegurarse de que el tamaño de los bytes Buffer coincida con el del tensor correspondiente o de que primero cambiar el tamaño del tensor con resizeInput(int, int[]) La forma y la información de los tensores se pueden que se obtienen a través de la clase Tensor, disponible a través de getInputTensor(int) y getOutputTensor(int).

ADVERTENCIA: Las instancias InterpreterApi no son seguras para los subprocesos.

ADVERTENCIA: Una instancia InterpreterApi posee recursos que deben ser se libera de forma explícita invocando close()

La biblioteca de TFLite se compiló en función de la API de NDK 19. Es posible que funcione con niveles de API inferiores a 19, pero no está garantizada.

Categorías anidadas

clase InterpreterApi.Options Una clase de opciones para controlar el comportamiento del intérprete del entorno de ejecución.

Métodos públicos

abstracto anular
allocateTensors()
Actualiza de forma explícita las asignaciones para todos los tensores, si es necesario.
abstracto anular
close()
Libera los recursos asociados con la instancia InterpreterApi.
estático InterpreterApi
create(opciones File modelFile, InterpreterApi.Options)
Construye una instancia de InterpreterApi con el modelo y las opciones especificados.
estático InterpreterApi
create(ByteBuffer byteBuffer, opciones InterpreterApi.Options)
Construye una instancia de InterpreterApi con el modelo y las opciones especificados.