InterpreterApi

公共接口 InterpreterApi
已知的间接子类

TensorFlow Lite 模型解释器的接口,不包括实验性方法。

InterpreterApi 实例封装了一个预训练的 TensorFlow Lite 模型,其中 以执行模型推断。

例如,如果模型仅接受一个输入并仅返回一个输出:

try (InterpreterApi interpreter =
     new InterpreterApi.create(file_of_a_tensorflowlite_model)) {
   interpreter.run(input, 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);
 }
 

如果模型采用或生成字符串张量:

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

请注意,形状 [] 和形状 [1] 是有区别的。对于标量字符串张量 输出:

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

将 TensorFlow 模型转换为 TensorFlowLite 时确定输入和输出的顺序 以及输入的默认形状。

当输入作为(多维)数组提供时,对应的输入张量将 根据该数组的形状隐式调整大小。当输入作为 Buffer 类型提供时,系统不会隐式调整大小;调用方必须确保 Buffer 字节大小与相应张量的大小一致,或者先确保 通过 resizeInput(int, int[]) 调整张量的大小。张量形状和类型信息 通过 Tensor 类获取,可通过 getInputTensor(int)getOutputTensor(int) 获取。

警告InterpreterApi 实例不是线程安全的。

警告InterpreterApi 实例拥有的资源必须 通过调用 close() 明确释放

TFLite 库是针对 NDK API 19 构建的。它可能适用于低于 Android API 级别 19、 但不保证一定如此

嵌套类

类别 InterpreterApi.Options 用于控制运行时解释器行为的选项类。

公共方法

抽象 无效
allocateTensors()
如有必要,显式更新所有张量的分配。
抽象 无效
close()
释放与 InterpreterApi 实例关联的资源。
静态 InterpreterApi
create(File modelFile, InterpreterApi.Options 选项)
使用指定的模型和选项构造 InterpreterApi 实例。
静态 InterpreterApi
create(ByteBuffer byteBuffer, InterpreterApi.Options 选项)
使用指定的模型和选项构造 InterpreterApi 实例。
抽象 整数
getInputIndex(String opName)
根据输入的操作名称获取该输入的索引。
抽象 Tensor
getInputTensor(int inputIndex)
获取与提供的输入索引关联的张量。
抽象 整数
getInputTensorCount()
获取输入张量的数量。
抽象
getLastNativeInferenceDurationNanoseconds()
返回原生推理时间。
抽象 整数
getOutputIndex(String opName)
根据输出的操作名称,获取该输出的索引。
抽象 Tensor
getOutputTensor(int outputIndex)
获取与提供的输出索引关联的张量。
抽象 整数
getOutputTensorCount()
获取输出张量的数量。
抽象 无效
resizeInput(int idx, int[] dims, boolean strict)
将原生模型第 idx 个输入的大小调整为指定的维度。
抽象 无效
resizeInput(int idx, int[] dims)resizeInput
将原生模型第 idx 个输入的大小调整为指定的维度。
抽象 无效