| 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  InterpreterApicon el modelo y las opciones especificados. | 
| estático InterpreterApi | 
create(ByteBuffer byteBuffer, opciones InterpreterApi.Options)
                
                   Construye una instancia de  InterpreterApicon el modelo y las opciones especificados. | 
| abstracto número entero | 
getInputIndex(opName de String)
                
                   Obtiene el índice de una entrada según el nombre de operación de la entrada. | 
| abstracto Tensor | 
getInputTensor(int inputIndex)
                
                   Obtiene el tensor asociado con el índice de entrada proporcionado. | 
| abstracto número entero | 
getInputTensorCount()
                
                   Obtiene la cantidad de tensores de entrada. | 
| abstracto Largo | 
getLastNativeInferenceDurationNanoseconds()
                
                   Muestra el tiempo de inferencia nativo. | 
| abstracto número entero | 
getOutputIndex(opName de String)
                
                   Obtiene el índice de una salida según el nombre de operación de la salida. | 
| abstracto Tensor | 
getOutputTensor(int outputIndex)
                
                   Obtiene el tensor asociado con el índice de salida proporcionado. | 
| abstracto número entero | 
getOutputTensorCount()
                
                   Obtiene la cantidad de tensores de salida. | 
| abstracto anular | 
resizeInput(int idx, int[] dims, boolean strict)
                
                   Cambia el tamaño de la entrada idx-th del modelo nativo a los difuminados determinados. | 
| abstracto anular | 
resizeInput(int idx, int[] atenuación)
                
                   Cambia el tamaño de la entrada idx-th del modelo nativo a los difuminados determinados. | 
| abstracto anular | |
| abstracto anular | 
runForMultipleInputsOutputs(entradas Object[], Map<Integer, Object> salidas)
                
                   Ejecuta la inferencia de modelo si el modelo toma varias entradas o muestra varias salidas. | 
Métodos heredados
Métodos públicos
público abstracto anular allocateTensors ()
Actualiza de forma explícita las asignaciones para todos los tensores, si es necesario.
Esto propagará formas y asignaciones de memoria para tensores dependientes usando la entrada formas de tensores tal y como se presentan.
Nota: Esta llamada es *completamente opcional*. La asignación de tensor ocurrirá automáticamente durante la ejecución si se cambió el tamaño de algún tensor de entrada. Este llamado es muy útil para determinar la formas para cualquier tensor de salida antes de ejecutar el grafo, p.ej.,
 interpreter.resizeInput(0, new int[]{1, 4, 4, 3}));
 interpreter.allocateTensors();
 FloatBuffer input = FloatBuffer.allocate(interpreter.getInputTensor(0).numElements());
 // Populate inputs...
 FloatBuffer output = FloatBuffer.allocate(interpreter.getOutputTensor(0).numElements());
 interpreter.run(input, output)
 // Process outputs...Nota: Algunos gráficos tienen resultados con forma dinámica, en cuyo caso, es posible que la forma de salida no propagarse por completo hasta que se ejecute la inferencia.
Arroja
| IllegalStateException | si los tensores del grafo no se pudieron asignar correctamente. | 
|---|
público abstracto anular cerrar ()
Libera los recursos asociados con la instancia InterpreterApi. 
público estático InterpreterApi . crear (File modelFile, InterpreterApi.Options opciones)
Construye una instancia de InterpreterApi con el modelo y las opciones especificados. El modelo
 se cargará desde un archivo.
Parámetros
| modelFile | Un archivo que contiene un modelo de TF Lite previamente entrenado. | 
|---|---|
| opciones | Un conjunto de opciones para personalizar el comportamiento de los intérpretes. | 
Arroja
| IllegalArgumentException. | si modelFileno codifica un TensorFlow Lite válido
     un modelo de responsabilidad compartida. | 
|---|
público estático InterpreterApi . crear (ByteBuffer byteBuffer, InterpreterApi.Options)
Construye una instancia de InterpreterApi con el modelo y las opciones especificados. El modelo
 se leerán desde un ByteBuffer.
Parámetros
| byteBuffer | Un modelo de TF Lite previamente entrenado, en formato binario serializado. ByteBuffer debe
     no se modificará después de la construcción de una instancia de InterpreterApi. ElByteBufferpuede ser unMappedByteBufferque mapea a la memoria un archivo de modelo o unByteBufferdirecto de nativeOrder() que contenga el contenido de bytes de un modelo | 
|---|---|
| opciones | Un conjunto de opciones para personalizar el comportamiento de los intérpretes. | 
Arroja
| IllegalArgumentException. | si byteBufferno esMappedByteBufferniByteBufferdirecto de nativeOrder. | 
|---|
público abstracto número entero getInputIndex (Nombre de la operación de cadena)
Obtiene el índice de una entrada según el nombre de operación de la entrada.
Parámetros
| opName | 
|---|
Arroja
| IllegalArgumentException. | si opNameno coincide con ninguna entrada en el modelo que se usa
     para inicializar el intérprete. | 
|---|
público abstracto Tensor . getInputTensor (int inputIndex)
Obtiene el tensor asociado con el índice de entrada proporcionado.
Parámetros
| inputIndex | 
|---|
Arroja
| IllegalArgumentException. | si inputIndexes negativo o no es menor que el
     cantidad de entradas del modelo. | 
|---|
público abstracto número entero getInputTensorCount ()
Obtiene la cantidad de tensores de entrada.
público abstracto Largo . getLastNativeInferenceDurationNanoseconds ()
Muestra el tiempo de inferencia nativo.
Arroja
| IllegalArgumentException. | si el intérprete no inicializa el modelo. | 
|---|
público abstracto número entero getOutputIndex (Nombre de la operación de cadena)
Obtiene el índice de una salida según el nombre de operación de la salida.
Parámetros
| opName | 
|---|
Arroja
| IllegalArgumentException. | si opNameno coincide con ninguna salida en el modelo que se usó.
     para inicializar el intérprete. | 
|---|
público abstracto Tensor . getOutputTensor (int outputIndex)
Obtiene el tensor asociado con el índice de salida proporcionado.
Nota: Es posible que los detalles del tensor de salida (p.ej., la forma) no se completen por completo hasta después de la inferencia
 ejecutado. Si necesitas detalles actualizados *antes* de ejecutar la inferencia (p.ej., después de cambiar el tamaño de un
 tensor de entrada, que puede invalidar formas de tensor de salida), usa allocateTensors() para
 activar de forma explícita
la asignación y la propagación de formas. Ten en cuenta que, para los gráficos con formas de salida
 que dependen de *valores* de entrada, es posible que la forma de la salida no se determine por completo hasta
 ejecutar la inferencia.
Parámetros
| outputIndex | 
|---|
Arroja
| IllegalArgumentException. | si outputIndexes negativo o no es menor que el
     cantidad de salidas del modelo. | 
|---|
público abstracto número entero getOutputTensorCount ()
Obtiene la cantidad de tensores de salida.
público abstracto anular resizeInput (int idx, int[] atenuación, booleano estricto)
Cambia el tamaño de la entrada idx-th del modelo nativo a los difuminados determinados.
Cuando el valor "strict" es "True", solo se puede cambiar el tamaño de las dimensiones desconocidas. Las dimensiones desconocidas son se indica como `-1` en el array que devuelve `Tensor.shapeSignature()`.
Parámetros
| idx | |
|---|---|
| atenúa | |
| Estricta | 
Arroja
| IllegalArgumentException. | si idxes negativo o no es menor que el número
     de las entradas del modelo; o si se produce un error al cambiar el tamaño de la entrada idx-th. Además, el error
     ocurre cuando se intenta cambiar el tamaño de un tensor con dimensiones fijas cuando `strict` es True. | 
|---|
público abstracto anular resizeInput (int idx, int[] atenuar)
Cambia el tamaño de la entrada idx-th del modelo nativo a los difuminados determinados.
Parámetros
| idx | |
|---|---|
| atenúa | 
Arroja
| IllegalArgumentException. | si idxes negativo o no es menor que el número
     de las entradas del modelo; o si se produce un error al cambiar el tamaño de la entrada idx-th. | 
|---|
público abstracto anular correr (Entrada de objetos, Objetos de salida)
Ejecuta la inferencia de modelo si el modelo toma solo una entrada y proporciona solo una salida.
Advertencia: La API es más eficiente si se aplica Buffer (de preferencia, directa, pero no obligatoria).
 se usa como el tipo de datos de entrada/salida. Te recomendamos usar Buffer para el feed y la recuperación.
 datos básicos para lograr un mejor rendimiento. Los siguientes tipos concretos de Buffer son
 compatibles:
 
- ByteBuffer: Es compatible con cualquier tipo primitivo de tensor subyacente.
- FloatBuffer: Es compatible con tensores de número de punto flotante.
- IntBuffer: Es compatible con los tensores int32.
- LongBuffer: Es compatible con los tensores int64.
Buffer, ni como entradas escalares.Parámetros
| entrada | un array o un array multidimensional, o un Bufferde tipos primitivos
     incluidos int, float, long y byte.Bufferes la manera preferida de pasar
     datos de entrada para tipos primitivos, mientras que los tipos de cadena requieren el uso de la
     ruta de entrada del array. Cuando se usa unBuffer, su contenido no debe cambiar hasta
     se completa la inferencia de modelo, y el llamador debe asegurarse de queBufferesté en el
     posición de lectura adecuada. Solo se permite un valornullsi el llamador usa unDelegate, que permite la interoperabilidad del controlador de búfer, y dicho búfer se vinculó al
     la entradaTensor. | 
|---|---|
| output | un array multidimensional de datos de salida o un Bufferde tipos primitivos
     incluidos int, float, long y byte. Cuando se usa unBuffer, el llamador debe asegurarse
     que tiene configurada la posición de escritura adecuada. Se permite un valor nulo, y es útil para
     ciertos casos, p.ej., si el llamador usa unDelegateque permite el controlador del búfer
     y que dicho búfer se vinculó alTensorde salida (consulta también Interpreter.Options#setAllowBufferHandleOutput(boolean)),
     o si el grafo tiene resultados con forma dinámica y el llamador debe consultar la formaTensorde salida después de que se haya invocado la inferencia y recuperar los datos directamente desde la salida.
     tensor (a través deTensor.asReadOnlyBuffer()). | 
Arroja
| IllegalArgumentException. | si inputes nulo o está vacío, o si se produce un error cuando
     ejecutar la inferencia. | 
|---|---|
| IllegalArgumentException. | (EXPERIMENTAL, sujeto a cambios) si la inferencia es
     interrumpida por setCancelled(true). | 
público abstracto anular runForMultipleInputsOutputs (entradas Objeto[], Map<Número entero, Salidas> Objeto)
Ejecuta la inferencia de modelo si el modelo toma varias entradas o muestra varias salidas.
Advertencia: La API es más eficiente si se usan Buffer (de preferencia, directa, pero no obligatoria).
 se usan como tipos de datos de entrada y salida. Te recomendamos usar Buffer para el feed y la recuperación.
 datos básicos para lograr un mejor rendimiento. Los siguientes tipos concretos de Buffer son
 compatibles:
 
- ByteBuffer: Es compatible con cualquier tipo primitivo de tensor subyacente.
- FloatBuffer: Es compatible con tensores de número de punto flotante.
- IntBuffer: Es compatible con los tensores int32.
- LongBuffer: Es compatible con los tensores int64.
Buffer, ni como entradas escalares.
 Nota: Los valores de null para elementos individuales de inputs y outputs son los siguientes:
 se permite solo si el llamador usa un Delegate que permite la interoperabilidad del controlador del búfer
 dicho búfer se vinculó a las Tensor de entrada o salida correspondientes.
Parámetros
| ocultas | un array de datos de entrada. Las entradas deben estar en el mismo orden que las entradas de la
     un modelo de responsabilidad compartida. Cada entrada puede ser un array o un array multidimensional, o un Bufferde
     tipos primitivos, como int, float, long y byte.Bufferes la forma preferida.
     para pasar datos de entrada grandes, mientras que los tipos de cadena requieren el uso del array (multidimensional)
     ruta de entrada. Cuando se usaBuffer, su contenido no debe cambiar hasta que se modele
     se realice la inferencia, y el llamador debe asegurarse de queBufferesté en el
     posición de lectura. | 
|---|---|
| resultados | Un mapa de asignación de índices de salida a arrays multidimensionales de datos de salida o Bufferde tipos primitivos, como int, float, long y byte Solo necesita mantener
     las entradas que se usarán. Cuando se usa unBuffer, el llamador debe asegurarse
     que tiene configurada la posición de escritura adecuada. El mapa puede estar vacío para los casos en los que
     los controladores del búfer se usan para datos de tensor de salida o casos en los que las salidas
     y el llamador debe consultar el resultado de la formaTensordespués de que se haya realizado la inferencia
     se invocan y recuperan los datos directamente desde el tensor de salida (medianteTensor.asReadOnlyBuffer()). | 
Arroja
| IllegalArgumentException. | si inputses nulo o está vacío, sioutputses
     null, o si se produce un error al ejecutar la inferencia. | 
|---|