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)
và 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
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, 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 | |
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 | |
Tensor |