คลาสไดรเวอร์เพื่อขับเคลื่อนการอนุมานโมเดลด้วย TensorFlow Lite
หมายเหตุ: หากคุณไม่ต้องการเข้าถึงส่วน "ทดลอง" ฟีเจอร์ API ด้านล่าง ต้องการใช้ InterpreterApi และ Interpreterโรงงาน แทนการใช้ล่ามโดยตรง
Interpreter สรุปโมเดล TensorFlow Lite ที่ฝึกล่วงหน้าไว้ในการทำงาน
 จะดำเนินการสำหรับการอนุมานโมเดล
 
ตัวอย่างเช่น หากโมเดลรับอินพุตเพียง 1 อินพุตและแสดงผลเพียง 1 เอาต์พุต
try (Interpreter interpreter = new Interpreter(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 (Interpreter interpreter = new Interpreter(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 (Interpreter interpreter = new Interpreter(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 ผ่าน resizeInput(int, int[]) ก่อน คุณจะรับข้อมูลรูปร่างและประเภท Tensor ได้ทางคลาส Tensor ซึ่งพร้อมใช้งานผ่าน getInputTensor(int) และ getOutputTensor(int)
 
คำเตือน:Interpreter อินสแตนซ์ไม่ปลอดภัยของชุดข้อความ Interpreter
 เป็นเจ้าของทรัพยากรที่ต้องได้รับการทำให้เป็นอิสระอย่างชัดเจนโดยการเรียกใช้ close()
ไลบรารี TFLite สร้างขึ้นโดยเทียบกับ NDK API 19 โดยอาจใช้งานได้สำหรับ Android API ระดับต่ำกว่า 19 แต่ไม่มีการรับประกัน
ชั้นเรียนที่ซ้อนกัน
| คลาส | Interpreter.Options | คลาสตัวเลือกสำหรับการควบคุมลักษณะการทำงานของล่ามรันไทม์ | |
ผู้รับเหมาก่อสร้าง
| 
ล่าม(ตัวเลือก File modelFile, Interpreter.Options)
                
                   เริ่มต้น  Interpreterและระบุตัวเลือกสำหรับปรับแต่งลักษณะการทำงานของล่าม | |
วิธีการสาธารณะ
| เป็นโมฆะ | 
allocateTensors()
                
                   อัปเดตการจัดสรรสำหรับ Tensor ทั้งหมดอย่างชัดแจ้ง หากจำเป็น | 
| เป็นโมฆะ | 
close()
                
                   ปล่อยทรัพยากรที่เชื่อมโยงกับอินสแตนซ์  InterpreterApi | 
| int | |
| Tensor | 
getInputTensor(int InputIndex)
                
                   รับ Tensor ที่เชื่อมโยงกับดัชนีอินพุตที่ระบุ | 
| int | 
getInputTensorCount()
                
                   รับจำนวน Tensor อินพุต | 
| Tensor | 
getInputTensorFromSignature(String InputName, String signatureKey)
                
                   รับ Tensor ที่เชื่อมโยงกับชื่ออินพุตและชื่อเมธอดลายเซ็นที่ระบุ | 
| ยาว | 
getLastNativeInferenceDurationNanoseconds()
                
                   แสดงผลเวลาการอนุมานดั้งเดิม | 
| int | |
| Tensor | 
getOutputTensor(int exitIndex)
                
                   รับ Tensor ที่เชื่อมโยงกับดัชนีเอาต์พุตที่ระบุ | 
| int | 
getOutputTensorCount()
                
                   รับจำนวน Tensor เอาต์พุต | 
| Tensor | 
getOutputTensorFromSignature(Stringการแสดงผลโฆษณา, String signatureKey)
                
                   รับ Tensor ที่เชื่อมโยงกับชื่อเอาต์พุตที่ให้ไว้ในเมธอดลายเซ็นที่เฉพาะเจาะจง | 
| String[] | |
| String[] | 
getSignatureKeys()
                
                   รับรายการชื่อวิธีการที่ส่งออกของ SignatureDef ที่มีอยู่ในโมเดล | 
| String[] | |
| เป็นโมฆะ | 
resetVariableTensors()
                
                   ขั้นสูง: รีเซ็ต Tensor ตัวแปรทั้งหมดเป็นค่าเริ่มต้น | 
| เป็นโมฆะ | 
resizeInput(int idx, int[] dims, boolean strict)
                
                   ปรับขนาดอินพุต idx-th ของโมเดลดั้งเดิมตามความสว่างที่กำหนด | 
| เป็นโมฆะ | 
resizeInput(int idx, int[] หรี่แสง)
                
                   ปรับขนาดอินพุต idx-th ของโมเดลดั้งเดิมตามความสว่างที่กำหนด | 
| เป็นโมฆะ | |
| เป็นโมฆะ | 
runForMultipleInputsOutputs(อินพุต Object[], แมป<จำนวนเต็ม, Object> เอาต์พุต)
                
                   เรียกใช้การอนุมานโมเดลหากโมเดลรับอินพุตหลายรายการหรือแสดงผลหลายเอาต์พุต | 
| เป็นโมฆะ | 
runSignature(อินพุต Map<String, Object>, Map<String, Object> เอาต์พุต)
                
                   เหมือนกับ  runSignature(Map, Map, String)แต่ไม่ต้องส่งผ่าน signatureKey
 สมมติว่าโมเดลมี SignatureDef 1 รายการ | 
| เป็นโมฆะ | |
| เป็นโมฆะ | 
setCancelled(บูลีนถูกยกเลิก)
                
                   ขั้นสูง: รบกวนการอนุมานระหว่างการโทรถึง  run(Object, Object) | 
เมธอดที่รับมา
ผู้รับเหมาก่อสร้าง
สาธารณะ ล่าม (ไฟล์ modelFile)
เริ่มต้น Interpreter
พารามิเตอร์
| modelFile | ไฟล์ของโมเดล TF Lite ที่ฝึกไว้แล้วล่วงหน้า | 
|---|
การขว้าง
| IllegalArgumentException | หาก modelFileไม่ได้เข้ารหัส TensorFlow Lite ที่ถูกต้อง
     โมเดล | 
|---|
สาธารณะ ล่าม (ตัวเลือก File modelFile, Interpreter.Options)
เริ่มต้น Interpreter และระบุตัวเลือกสำหรับปรับแต่งลักษณะการทำงานของล่าม
พารามิเตอร์
| modelFile | ไฟล์ของโมเดล TF Lite ที่ฝึกไว้แล้ว | 
|---|---|
| ตัวเลือก | ชุดตัวเลือกสำหรับปรับแต่งลักษณะการทำงานของล่าม | 
การขว้าง
| IllegalArgumentException | หาก modelFileไม่ได้เข้ารหัส TensorFlow Lite ที่ถูกต้อง
     โมเดล | 
|---|
สาธารณะ ล่าม (ByteBuffer ไบต์Buffer)
เริ่มต้น Interpreter ด้วย ByteBuffer ของไฟล์โมเดล
 
ไม่ควรแก้ไข ByteBuffer หลังจากสร้าง Interpreter 
 ByteBuffer อาจเป็น MappedByteBuffer ที่แมปไฟล์โมเดลหน่วยความจำ หรือ
 ByteBuffer โดยตรงของ NativeOrder() ที่มีเนื้อหาเป็นไบต์ของโมเดล
พารามิเตอร์
| byteBuffer | 
|---|
การขว้าง
| IllegalArgumentException | หาก byteBufferไม่ใช่MappedByteBufferหรือ
     โดยตรงByteBufferของ NativeOrder | 
|---|
สาธารณะ ล่าม (ตัวเลือก ByteBuffer bytesBuffer, Interpreter.Options)
เริ่มต้น Interpreter ด้วย ByteBuffer ของไฟล์โมเดลและชุดของ
 Interpreter.Options ที่กำหนดเอง
 
ByteBuffer ไม่ควรได้รับการแก้ไขหลังจากการสร้าง Interpreter ByteBuffer อาจเป็น MappedByteBuffer ที่แมปความทรงจำ
 ไฟล์โมเดลหรือ ByteBuffer โดยตรงของ NativeOrder() ที่มีเนื้อหาไบต์
 ของโมเดล
พารามิเตอร์
| byteBuffer | |
|---|---|
| ตัวเลือก | 
การขว้าง
| IllegalArgumentException | หาก byteBufferไม่ใช่MappedByteBufferหรือ
     โดยตรงByteBufferของ NativeOrder | 
|---|
วิธีการสาธารณะ
สาธารณะ เป็นโมฆะ allocateTensors ()
อัปเดตการจัดสรรสำหรับ Tensor ทั้งหมดอย่างชัดแจ้ง หากจำเป็น
การดำเนินการนี้จะเผยแพร่รูปร่างและการจัดสรรหน่วยความจำสำหรับ Tensor อ้างอิงโดยใช้อินพุต รูปร่าง Tensor ตามที่กำหนด
หมายเหตุ: การโทรนี้เป็นแบบ *ไม่บังคับเท่านั้น* การจัดสรร Tensor จะเกิดขึ้นโดยอัตโนมัติในระหว่าง การดำเนินการหากมีการปรับขนาด Tensor อินพุต การเรียกนี้เป็นประโยชน์มากที่สุดในการระบุ รูปร่างสำหรับ Tensor เอาต์พุตก่อนที่จะเรียกใช้กราฟ เช่น
 interpreter.resizeInput(0, new int[]{1, 4, 4, 3}));
 interpreter.allocateTensors();
 FloatBuffer input = FloatBuffer.allocate(interpreter.getInputTensor(0).numElements());
 // Populate inputs...
 FloatBuffer output = FloatBuffer.allocate(interpreter.getOutputTensor(0).numElements());
 interpreter.run(input, output)
 // Process outputs...หมายเหตุ: กราฟบางส่วนมีเอาต์พุตที่มีรูปร่างแบบไดนามิก ซึ่งในกรณีนี้รูปร่างเอาต์พุตอาจไม่ เผยแพร่อย่างสมบูรณ์จนกว่าจะมีการดำเนินการอนุมาน
สาธารณะ เป็นโมฆะ ปิด ()
ปล่อยทรัพยากรที่เชื่อมโยงกับอินสแตนซ์ InterpreterApi 
สาธารณะ Int getInputIndex (สตริง opName)
รับดัชนีของอินพุตโดยใช้ชื่อการดำเนินการของอินพุต
พารามิเตอร์
| opName | 
|---|
สาธารณะ Tensor getInputTensor (int InputIndex)
รับ Tensor ที่เชื่อมโยงกับดัชนีอินพุตที่ระบุ
พารามิเตอร์
| inputIndex | 
|---|
สาธารณะ Int getInputTensorCount ()
รับจำนวน Tensor อินพุต
สาธารณะ Tensor getInputTensorFromSignature (String InputName, String signatureKey)
รับ Tensor ที่เชื่อมโยงกับชื่ออินพุตและชื่อเมธอดลายเซ็นที่ระบุ
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง
พารามิเตอร์
| inputName | ป้อนชื่อในลายเซ็น | 
|---|---|
| signatureKey | คีย์ลายเซ็นที่ระบุ SignatureDef อาจเป็นค่าว่างได้หากโมเดลมี 1 ลายเซ็น | 
การขว้าง
| IllegalArgumentException | หาก inputNameหรือsignatureKeyเป็นค่าว่างหรือว่างเปล่า
     หรือระบุชื่อไม่ถูกต้อง | 
|---|
สาธารณะ Int getOutputIndex (สตริง opName)
รับดัชนีของเอาต์พุตโดยใช้ชื่อการดำเนินการของเอาต์พุต
พารามิเตอร์
| opName | 
|---|
สาธารณะ Tensor getOutputTensor (int outputIndex)
รับ Tensor ที่เชื่อมโยงกับดัชนีเอาต์พุตที่ระบุ
หมายเหตุ: รายละเอียด Tensor เอาต์พุต (เช่น รูปร่าง) อาจไม่มีการป้อนข้อมูลอย่างสมบูรณ์จนกว่าจะเสร็จสิ้นการอนุมาน
 จะถูกดำเนินการ หากคุณต้องการรายละเอียดที่อัปเดต *ก่อน* ใช้การอนุมาน (เช่น หลังจากปรับขนาด
 Tensor อินพุต ซึ่งอาจทำให้รูปร่าง Tensor เอาต์พุตไม่ถูกต้อง) ให้ใช้ allocateTensors() เพื่อ
 ทริกเกอร์การจัดสรรและการเผยแพร่รูปร่างอย่างชัดเจน โปรดทราบว่าสำหรับกราฟที่มีรูปร่างเอาต์พุต
 ที่ขึ้นอยู่กับ *ค่า*อินพุต รูปร่างเอาต์พุตอาจไม่ได้รับการกำหนดโดยสมบูรณ์จนกว่า
 การอนุมานการทำงาน
พารามิเตอร์
| outputIndex | 
|---|
สาธารณะ Int getOutputTensorCount ()
รับจำนวน Tensor เอาต์พุต
สาธารณะ Tensor getOutputTensorFromSignature (สตริงเอาต์พุตName, สตริง SignatureKey)
รับ Tensor ที่เชื่อมโยงกับชื่อเอาต์พุตที่ให้ไว้ในเมธอดลายเซ็นที่เฉพาะเจาะจง
หมายเหตุ: รายละเอียด Tensor เอาต์พุต (เช่น รูปร่าง) อาจไม่มีการป้อนข้อมูลอย่างสมบูรณ์จนกว่าจะเสร็จสิ้นการอนุมาน
 จะถูกดำเนินการ หากคุณต้องการรายละเอียดที่อัปเดต *ก่อน* ใช้การอนุมาน (เช่น หลังจากปรับขนาด
 Tensor อินพุต ซึ่งอาจทำให้รูปร่าง Tensor เอาต์พุตไม่ถูกต้อง) ให้ใช้ allocateTensors() เพื่อ
 ทริกเกอร์การจัดสรรและการเผยแพร่รูปร่างอย่างชัดเจน โปรดทราบว่าสำหรับกราฟที่มีรูปร่างเอาต์พุต
 ที่ขึ้นอยู่กับ *ค่า*อินพุต รูปร่างเอาต์พุตอาจไม่ได้รับการกำหนดโดยสมบูรณ์จนกว่า
 การอนุมานการทำงาน
 
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง
พารามิเตอร์
| outputName | ชื่อเอาต์พุตในลายเซ็น | 
|---|---|
| signatureKey | คีย์ลายเซ็นที่ระบุ SignatureDef อาจเป็นค่าว่างได้หากโมเดลมี 1 ลายเซ็น | 
การขว้าง
| IllegalArgumentException | หาก outputNameหรือsignatureKeyเป็นค่าว่าง หรือ
     ชื่อว่างเปล่าหรือไม่ถูกต้อง | 
|---|
สาธารณะ String[] getSignatureInputs (สตริง SignatureKey)
รับรายการอินพุต SignatureDefs สำหรับเมธอด signatureKey
 
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง
พารามิเตอร์
| signatureKey | 
|---|
สาธารณะ String[] getSignatureKeys ()
รับรายการชื่อวิธีการที่ส่งออกของ SignatureDef ที่มีอยู่ในโมเดล
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง
สาธารณะ String[] getSignatureOutputs (สตริง SignatureKey)
รับรายการเอาต์พุต SignatureDefs สำหรับเมธอด signatureKey
 
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง
พารามิเตอร์
| signatureKey | 
|---|
สาธารณะ เป็นโมฆะ resetVariableTensors ()
ขั้นสูง: รีเซ็ต Tensor ตัวแปรทั้งหมดเป็นค่าเริ่มต้น
หาก Tensor ตัวแปรไม่มีบัฟเฟอร์ที่เชื่อมโยง ระบบจะรีเซ็ตค่าเป็น 0
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง
สาธารณะ เป็นโมฆะ resizeInput (int idx, int[] ดิม, บูลีน strict)
ปรับขนาดอินพุต idx-th ของโมเดลดั้งเดิมตามความสว่างที่กำหนด
เมื่อ "เข้มงวด" เป็น "จริง" ระบบจะปรับขนาดได้เฉพาะมิติข้อมูลที่ไม่รู้จักเท่านั้น มิติข้อมูลที่ไม่รู้จักคือ ระบุเป็น "-1" ในอาร์เรย์ที่แสดงผลโดย "Tensor.shapeSignature()"
พารามิเตอร์
| IDX | |
|---|---|
| หรี่แสง | |
| เข้มงวด | 
สาธารณะ เป็นโมฆะ resizeInput (int idx, int[] หรี่แสง)
ปรับขนาดอินพุต idx-th ของโมเดลดั้งเดิมตามความสว่างที่กำหนด
พารามิเตอร์
| IDX | |
|---|---|
| หรี่แสง | 
สาธารณะ เป็นโมฆะ เรียกใช้ (อินพุตออบเจ็กต์, เอาต์พุต ออบเจ็กต์)
เรียกใช้การอนุมานโมเดลหากโมเดลรับเพียงอินพุตเดียวและมีเอาต์พุตเพียง 1 รายการ
คำเตือน: API จะมีประสิทธิภาพมากขึ้นหาก Buffer (แนะนำโดยตรง แต่ไม่บังคับ)
 ใช้เป็นประเภทข้อมูลอินพุต/เอาต์พุต โปรดพิจารณาใช้ Buffer เพื่อป้อนและดึงข้อมูล
 ข้อมูลขั้นพื้นฐานเพื่อประสิทธิภาพที่ดีขึ้น Buffer ประเภทที่เป็นรูปธรรมต่อไปนี้
 รองรับ
 
- ByteBuffer- ใช้ได้กับ Tensor ประเภทพื้นฐานใดๆ ที่สำคัญ
- FloatBuffer- ใช้งานได้กับ Tensor แบบลอย
- IntBuffer- ใช้งานได้กับ int32 Tensors
- LongBuffer- ใช้งานได้กับ int64 Tensors
Buffer หรือเป็นอินพุตสเกลาร์พารามิเตอร์
| อินพุต | อาร์เรย์หรืออาร์เรย์หลายมิติ หรือ Bufferของประเภทพื้นฐาน
     เช่น int, Flo, Long และ ByteBufferเป็นทางผ่าน
     อินพุตสำหรับประเภทพื้นฐาน ในขณะที่ประเภทสตริงต้องใช้ฟังก์ชัน (หลายมิติข้อมูล)
     ของอินพุตของอาร์เรย์ เมื่อใช้Bufferเนื้อหาจะไม่เปลี่ยนแปลงจนกว่า
     การอนุมานโมเดลเสร็จสมบูรณ์แล้ว และผู้โทรต้องตรวจสอบว่าBufferอยู่ที่
     ตำแหน่งการอ่านที่เหมาะสม ค่าnullจะใช้ได้ก็ต่อเมื่อผู้โทรใช้Delegateที่ช่วยให้จัดการบัฟเฟอร์ได้ และบัฟเฟอร์ดังกล่าวยังเชื่อมโยงกับ
     ป้อนTensor | 
|---|---|
| เอาต์พุต | อาร์เรย์หลายมิติของข้อมูลเอาต์พุต หรือ Bufferของประเภทพื้นฐาน
     เช่น int, Flo, Long และ Byte เมื่อใช้Bufferผู้โทรจะต้องตรวจสอบว่า
     มีการกำหนดตำแหน่งการเขียนที่เหมาะสม สามารถใช้ค่า Null ได้ ซึ่งมีประโยชน์สำหรับ
     ในบางกรณี เช่น หากผู้โทรใช้Delegateที่รองรับการบัฟเฟอร์
     การทำงานร่วมกัน และบัฟเฟอร์ดังกล่าวยังถูกเชื่อมโยงกับเอาต์พุตTensor(ดู Interpreter.Options#setAllowBufferHandleOutput(boolean))
     หรือถ้ากราฟมีเอาต์พุตที่มีการกำหนดรูปทรงแบบไดนามิก และผู้โทรจะต้องสืบค้นรูปร่างเอาต์พุตTensorหลังจากที่เรียกใช้การอนุมานแล้ว โดยจะดึงข้อมูลจากเอาต์พุตโดยตรง
     tensor (ผ่านTensor.asReadOnlyBuffer()) | 
สาธารณะ เป็นโมฆะ runForMultipleInputsOutputs (อินพุต Object[], แมป<Integer, Object> เอาต์พุต)
เรียกใช้การอนุมานโมเดลหากโมเดลรับอินพุตหลายรายการหรือแสดงผลหลายเอาต์พุต
คำเตือน: API จะมีประสิทธิภาพมากกว่าหาก Buffer (แนะนำโดยตรง แต่ไม่บังคับ)
 จะใช้เป็นประเภทข้อมูลอินพุต/เอาต์พุต โปรดพิจารณาใช้ Buffer เพื่อป้อนและดึงข้อมูล
 ข้อมูลขั้นพื้นฐานเพื่อประสิทธิภาพที่ดีขึ้น Buffer ประเภทที่เป็นรูปธรรมต่อไปนี้
 รองรับ
 
- ByteBuffer- ใช้ได้กับ Tensor ประเภทพื้นฐานใดๆ ที่สำคัญ
- FloatBuffer- ใช้งานได้กับ Tensor แบบลอย
- IntBuffer- ใช้งานได้กับ int32 Tensors
- LongBuffer- ใช้งานได้กับ int64 Tensors
Buffer หรือเป็นอินพุตสเกลาร์
 หมายเหตุ: ค่า null สำหรับองค์ประกอบภายในของ inputs และ outputs คือ
 อนุญาตเฉพาะเมื่อผู้โทรใช้ Delegate ที่อนุญาตการทำงานร่วมกันของบัฟเฟอร์ และ
 มีการเชื่อมโยงบัฟเฟอร์กับอินพุตหรือเอาต์พุตที่เกี่ยวข้อง Tensor
พารามิเตอร์
| อินพุต | อาร์เรย์ของข้อมูลอินพุต อินพุตควรอยู่ในลำดับเดียวกับอินพุตของ
     โมเดล อินพุตแต่ละรายการอาจเป็นอาร์เรย์หรืออาร์เรย์หลายมิติ หรือ Bufferของ
     ประเภทพื้นฐาน ได้แก่ int, ทศนิยม, ยาว และไบต์ แนะนำให้ใช้Bufferเพื่อส่งข้อมูลอินพุตขนาดใหญ่ ในขณะที่ประเภทสตริงต้องใช้อาร์เรย์ (หลายมิติข้อมูล)
     เส้นทางอินพุต เมื่อใช้Bufferเนื้อหาไม่ควรเปลี่ยนแปลงจนกว่าโมเดล
     ได้ดำเนินการอนุมานแล้ว และผู้โทรต้องตรวจสอบว่าBufferเป็นไปตาม
     ตำแหน่งการอ่าน | 
|---|---|
| เอาต์พุต | ดัชนีเอาต์พุตการแมปแผนที่เป็นอาร์เรย์แบบหลายมิติของข้อมูลเอาต์พุตหรือ Bufferประเภทพื้นฐาน ได้แก่ int, ทศนิยม, ยาว และไบต์ เพียงแต่ต้องเก็บไว้
     รายการสำหรับเอาต์พุตที่จะใช้ เมื่อใช้Bufferผู้โทรจะต้องตรวจสอบว่า
     มีการกำหนดตำแหน่งการเขียนที่เหมาะสม แผนที่อาจว่างเปล่าในกรณีที่
     แฮนเดิลบัฟเฟอร์จะใช้สำหรับข้อมูล Tensor เอาต์พุต หรือในกรณีที่มีเอาต์พุตแบบไดนามิก
     และผู้โทรจะต้องค้นหารูปร่างTensorหลังการอนุมาน
     เรียกใช้ โดยดึงข้อมูลจาก tensor เอาต์พุตโดยตรง (ผ่านTensor.asReadOnlyBuffer()) | 
สาธารณะ เป็นโมฆะ runSignature (อินพุต Map<String, Object>, Map<String, Object> เอาต์พุต)
เหมือนกับ runSignature(Map, Map, String) แต่ไม่ต้องส่งผ่าน signatureKey
 สมมติว่าโมเดลมี SignatureDef 1 รายการ หากโมเดลมี SignatureDef มากกว่า 1 รายการ ระบบจะ
 ส่งข้อยกเว้น
 
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง
พารามิเตอร์
| อินพุต | |
|---|---|
| เอาต์พุต | 
สาธารณะ เป็นโมฆะ runSignature (แมป<สตริง, ออบเจ็กต์>อินพุต, แผนที่<สตริง, ออบเจ็กต์>เอาต์พุต, สตริง ลายเซ็นคีย์)
เรียกใช้การอนุมานโมเดลตาม SignatureDef ที่ให้ไว้ผ่าน signatureKey
 
ดูรายละเอียดเพิ่มเติมเกี่ยวกับอินพุตและเอาต์พุตที่อนุญาตได้ที่ run(Object, Object)
 ประเภทต่างๆ
 
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง
พารามิเตอร์
| อินพุต | แผนที่จากชื่ออินพุตใน SignatureDef ไปยังออบเจ็กต์อินพุต | 
|---|---|
| เอาต์พุต | การแมปจากชื่อเอาต์พุตใน SignatureDef ไปยังข้อมูลเอาต์พุต ส่วนนี้อาจว่างเปล่าหาก
     ผู้โทรต้องการค้นหาข้อมูล Tensorโดยตรงหลังการอนุมาน (เช่น หาก
     รูปร่างเอาต์พุตเป็นแบบไดนามิก หรือใช้แฮนเดิลบัฟเฟอร์เอาต์พุต) | 
| signatureKey | คีย์ลายเซ็นที่ระบุ SignatureDef | 
การขว้าง
| IllegalArgumentException | หาก inputsเป็นค่าว่างหรือว่างเปล่า หากเป็นoutputsหรือsignatureKeyเป็นค่าว่าง หรือหากมีข้อผิดพลาดเกิดขึ้นขณะเรียกใช้การอนุมาน | 
|---|
สาธารณะ เป็นโมฆะ setCancelled (ยกเลิกบูลีนแล้ว)
ขั้นสูง: รบกวนการอนุมานระหว่างการโทรถึง run(Object, Object)
 
ธงการยกเลิกจะตั้งค่าเป็น "จริง" เมื่อมีการเรียกใช้ฟังก์ชันนี้ ล่ามจะ
 ตรวจสอบ Flag ระหว่างการเรียกใช้ Op และหากเป็น true ล่ามจะหยุด
  ล่ามจะยังคงสถานะยกเลิกจนกว่าจะมีการ "ยกเลิกการยกเลิก" อย่างชัดเจน โดย
 setCancelled(false)
 
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง
พารามิเตอร์
| ยกเลิก | trueเพื่อยกเลิกการอนุมานโดยใช้ความพยายามอย่างเต็มที่falseถึง
     ให้กลับมาเริ่มอีกครั้ง | 
|---|
การขว้าง
| IllegalStateException | หากอินเตอร์พรีเตอร์ไม่ได้เริ่มต้นด้วย cancellable ซึ่งจะปิดอยู่โดยค่าเริ่มต้น | 
|---|