公共接口
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 | |
静态 InterpreterApi | |
抽象 整数 | |
抽象 Tensor |
getInputTensor(int inputIndex)
获取与提供的输入索引关联的张量。
|
抽象 整数 |
getInputTensorCount()
获取输入张量的数量。
|
抽象 长 |
getLastNativeInferenceDurationNanoseconds()
返回原生推理时间。
|
抽象 整数 | |
抽象 Tensor |
getOutputTensor(int outputIndex)
获取与提供的输出索引关联的张量。
|
抽象 整数 |
getOutputTensorCount()
获取输出张量的数量。
|
抽象 无效 |
resizeInput(int idx, int[] dims, boolean strict)
将原生模型第 idx 个输入的大小调整为指定的维度。
|
抽象 无效 | |
抽象 无效 |