InterpreterApi

giao diện công khai InterpreterApi
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)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
getInputIndex(String opName)
Lấy chỉ mục của một đầu vào dựa vào tên vận hành của đầu vào đó.
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
getOutputIndex(String opName)
Lấy chỉ mục của một đầu ra dựa vào tên hoạt động của đầu ra.
trừu tượng Tensor