คลาสย่อยโดยอ้อมที่รู้จัก |
อินเทอร์เฟซกับอินเทอร์พรีเตอร์โมเดล TensorFlow Lite ไม่รวมวิธีการทดลอง
อินสแตนซ์ InterpreterApi
จะสรุปโมเดล TensorFlow Lite ที่ฝึกล่วงหน้า โดยที่
จะดำเนินการสำหรับการอนุมานโมเดล
ตัวอย่างเช่น หากโมเดลรับอินพุตเพียง 1 อินพุตและแสดงผลเพียง 1 เอาต์พุต
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);
}
หากโมเดลใช้หรือสร้าง Tensor สตริง ให้ทำดังนี้
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] มีความแตกต่าง สำหรับ Tensor สตริงสเกลาร์ เอาต์พุต:
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 โมเดลที่มี Toco และมีรูปแบบเริ่มต้นของอินพุต
เมื่อมีการระบุอินพุตเป็นอาร์เรย์ (หลายมิติ) Tensor อินพุตที่เกี่ยวข้องจะ
ปรับขนาดได้ตามรูปร่างของอาร์เรย์นั้นโดยปริยาย เมื่อระบุอินพุตเป็นประเภท Buffer
ระบบจะไม่ปรับขนาดโดยนัย ผู้โทรต้องตรวจสอบให้แน่ใจว่าขนาด Buffer
ไบต์ตรงกับของ Tensor ที่ตรงกันหรือรายการแรก
ปรับขนาด Tensor ผ่าน