Lớp con gián tiếp đã biết |
Giao diện để trình biên dịch mô hình TensorFlow Lite, ngoại trừ các phương thức thử nghiệm.
Một thực thể InterpreterApi
đóng gói mô hình TensorFlow Lite được huấn luyện trước, trong đó
các phép toán sẽ được thực thi để suy luận mô hình.
Ví dụ: nếu một mô hình chỉ nhận một dữ liệu đầu vào và chỉ trả về một dữ liệu đầu ra:
try (InterpreterApi interpreter =
new InterpreterApi.create(file_of_a_tensorflowlite_model)) {
interpreter.run(input, output);
}
Nếu một mô hình có nhiều dữ liệu đầu vào hoặc đầu ra:
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);
}
Nếu một mô hình sử dụng hoặc tạo ra các tensor chuỗi:
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);
}
Lưu ý rằng có sự khác biệt giữa hình dạng [] và hình dạng[1]. Cho tensor chuỗi vô hướng kết quả:
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);
Thứ tự đầu vào và đầu ra được xác định khi chuyển đổi mô hình TensorFlow sang TensorFlowLite với Toco, cũng như hình dạng mặc định của đầu vào.
Khi đầu vào được cung cấp dưới dạng các mảng (đa chiều), (các) tensor đầu vào tương ứng sẽ
được thay đổi kích thước hoàn toàn theo hình dạng của mảng đó. Khi dữ liệu đầu vào được cung cấp dưới dạng loại Buffer
, việc đổi kích thước ngầm ẩn sẽ không được thực hiện; phương thức gọi phải đảm bảo rằng kích thước byte Buffer
khớp với kích thước của tensor tương ứng hoặc đáp ứng trước
đổi kích thước tensor thông qua resizeInput(int, int[])
. Thông tin về hình dạng và loại Tensor có thể được
lấy qua lớp Tensor
, được cung cấp qua getInputTensor(int)
và getOutputTensor(int)
.
CẢNH BÁO: Các thực thể InterpreterApi
không an toàn cho luồng.
CẢNH BÁO:Một thực thể InterpreterApi
sở hữu các tài nguyên phải là
được giải phóng một cách rõ ràng bằng cách gọi close()
Thư viện TFLite được xây dựng dựa trên API NDK 19. Ứng dụng này có thể hoạt động với API Android cấp 19 trở xuống, nhưng không được đảm bảo.
Lớp lồng ghép
lớp | InterpreterApi.Options | Một lớp tuỳ chọn để kiểm soát hành vi của trình phiên dịch trong thời gian chạy. |
Phương thức công khai
trừu tượng trống |
allocateTensors()
Cập nhật rõ ràng các lượt phân bổ cho tất cả tensor, nếu cần.
|
trừu tượng trống |
close()
Phát hành các tài nguyên liên kết với thực thể
InterpreterApi . |
tĩnh InterpreterApi |
tạo(các tuỳ chọn File modelFile, InterpreterApi.Options)
Tạo một thực thể
InterpreterApi bằng mô hình và các tuỳ chọn đã chỉ định. |
tĩnh InterpreterApi |
tạo(các lựa chọn ByteBuffer byteBuffer, InterpreterApi.Options)
Tạo một thực thể
InterpreterApi bằng mô hình và các tuỳ chọn đã chỉ định. |
trừu tượng đánh chặn | |
trừu tượng Tensor |
getInputTensor(int inputIndex)
Lấy Tensor liên kết với chỉ mục đầu vào đã cung cấp.
|
trừu tượng đánh chặn |
getInputTensorCount()
Lấy số lượng tensor đầu vào.
|
trừu tượng Dài |
getLastNativeInferenceDurationNanoseconds()
Trả về thời gian suy luận gốc.
|
trừu tượng đánh chặn | |
trừu tượng Tensor |