Interpreter

lớp cuối cùng công khai Phiên dịch

Lớp trình điều khiển để thúc đẩy dự đoán mô hình bằng TensorFlow Lite.

Lưu ý: Nếu bạn không cần truy cập vào bất kỳ tính năng "thử nghiệm" nào Các tính năng API dưới đây, ưu tiên sử dụng Phiên dịch thay vì sử dụng Trình thông dịch trực tiếp.

Interpreter đóng gói mô hình TensorFlow Lite được huấn luyện trước, trong đó có các hoạt động đượ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 (Interpreter interpreter = new Interpreter(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 (Interpreter interpreter = new Interpreter(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 (Interpreter interpreter = new Interpreter(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 thông tin đầu vào được cung cấp dưới dạng Buffer không được thực hiện thay đổi kích thước ngầm ẩn; phương thức gọi phải đảm bảo rằng kích thước byte Buffer khớp với tensor tương ứng hoặc trước tiên sẽ đổi kích thước tensor đó thông qua resizeInput(int, int[]). Bạn có thể lấy thông tin về loại và hình dạng Tensor qua lớp Tensor, hoạt động qua getInputTensor(int)getOutputTensor(int).

CẢNH BÁO: Các thực thể Interpreter không an toàn cho luồng. Một Interpreter sở hữu các tài nguyên phải được giải phóng 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 Interpreter.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.

Công ty xây dựng công cộng

Trình thông dịch(modelFile Tệp)
Khởi chạy một Interpreter.
Chế độ thông dịch(Tuỳ chọn Mô hình Tệp, Interpreter.Options)
Khởi chạy Interpreter và chỉ định các tuỳ chọn để tuỳ chỉnh hoạt động của phiên dịch.
Thông dịch viên(ByteBuffer byteBuffer)
Khởi động Interpreter bằng ByteBuffer của tệp mô hình.
Thông dịch viên(ByteBuffer byteBuffer, Interpreter.Options)
Khởi động Interpreter bằng ByteBuffer của tệp mô hình và một tập hợp gồm Interpreter.Options tuỳ chỉnh.

Phương thức công khai

void
allocateTensors()
Cập nhật rõ ràng các lượt phân bổ cho tất cả tensor, nếu cần.
void
close()
Phát hành các tài nguyên liên kết với thực thể InterpreterApi.
int
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 đó.
Tensor
getInputTensor(int inputIndex)
Lấy Tensor liên kết với chỉ mục đầu vào đã cung cấp.
int
getInputTensorCount()
Lấy số lượng tensor đầu vào.
Tensor
getInputTensorFromSignature(String inputName, String signatureKey)
Lấy Tensor liên kết với tên đầu vào và tên phương thức chữ ký đã cung cấp.
Long
getLastNativeInferenceDurationNanoseconds()
Trả về thời gian suy luận gốc.
int
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.
Tensor