Interpreter

ชั้นเรียนสุดท้ายแบบสาธารณะ ล่าม

คลาสไดรเวอร์เพื่อขับเคลื่อนการอนุมานโมเดลด้วย 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 คลาสตัวเลือกสำหรับการควบคุมลักษณะการทำงานของล่ามรันไทม์

ผู้รับเหมาก่อสร้าง

ล่าม(ไฟล์ modelFile)
เริ่มต้น Interpreter
ล่าม(ตัวเลือก File modelFile, Interpreter.Options)
เริ่มต้น Interpreter และระบุตัวเลือกสำหรับปรับแต่งลักษณะการทำงานของล่าม
ล่าม(ByteBuffer ไบต์Buffer)
เริ่มต้น Interpreter ด้วย ByteBuffer ของไฟล์โมเดล
ล่าม(ตัวเลือก ByteBuffer ไบต์Buffer, Interpreter.Options)
เริ่มต้น Interpreter ด้วย ByteBuffer ของไฟล์โมเดลและชุดของ Interpreter.Options ที่กำหนดเอง

วิธีการสาธารณะ

เป็นโมฆะ
allocateTensors()
อัปเดตการจัดสรรสำหรับ Tensor ทั้งหมดอย่างชัดแจ้ง หากจำเป็น
เป็นโมฆะ
close()
ปล่อยทรัพยากรที่เชื่อมโยงกับอินสแตนซ์ InterpreterApi
int
getInputIndex(สตริง opName)
รับดัชนีของอินพุตโดยใช้ชื่อการดำเนินการของอินพุต
Tensor
getInputTensor(int InputIndex)
รับ Tensor ที่เชื่อมโยงกับดัชนีอินพุตที่ระบุ
int
getInputTensorCount()
รับจำนวน Tensor อินพุต
Tensor
getInputTensorFromSignature(String InputName, String signatureKey)
รับ Tensor ที่เชื่อมโยงกับชื่ออินพุตและชื่อเมธอดลายเซ็นที่ระบุ
ยาว
getLastNativeInferenceDurationNanoseconds()
แสดงผลเวลาการอนุมานดั้งเดิม
int
getOutputIndex(สตริง opName)
รับดัชนีของเอาต์พุตโดยใช้ชื่อการดำเนินการของเอาต์พุต
Tensor
getOutputTensor(int exitIndex)
รับ Tensor ที่เชื่อมโยงกับดัชนีเอาต์พุตที่ระบุ
int
getOutputTensorCount()
รับจำนวน Tensor เอาต์พุต
Tensor
getOutputTensorFromSignature(Stringการแสดงผลโฆษณา, String signatureKey)
รับ Tensor ที่เชื่อมโยงกับชื่อเอาต์พุตที่ให้ไว้ในเมธอดลายเซ็นที่เฉพาะเจาะจง
String[]
getSignatureInputs(String signatureKey)
รับรายการอินพุต SignatureDefs สำหรับเมธอด signatureKey
String[]
getSignatureKeys()
รับรายการชื่อวิธีการที่ส่งออกของ SignatureDef ที่มีอยู่ในโมเดล
String[]
getSignatureOutputs(String signatureKey)
รับรายการเอาต์พุต SignatureDefs สำหรับเมธอด signatureKey
เป็นโมฆะ
resetVariableTensors()
ขั้นสูง: รีเซ็ต Tensor ตัวแปรทั้งหมดเป็นค่าเริ่มต้น
เป็นโมฆะ
resizeInput(int idx, int[] dims, boolean strict)
ปรับขนาดอินพุต idx-th ของโมเดลดั้งเดิมตามความสว่างที่กำหนด
เป็นโมฆะ
resizeInput(int idx, int[] หรี่แสง)
ปรับขนาดอินพุต idx-th ของโมเดลดั้งเดิมตามความสว่างที่กำหนด
เป็นโมฆะ
run(อินพุต Object, เอาต์พุต Object)
เรียกใช้การอนุมานโมเดลหากโมเดลรับเพียงอินพุตเดียวและมีเอาต์พุตเพียง 1 รายการ
เป็นโมฆะ
runForMultipleInputsOutputs(อินพุต Object[], แมป<จำนวนเต็มObject> เอาต์พุต)
เรียกใช้การอนุมานโมเดลหากโมเดลรับอินพุตหลายรายการหรือแสดงผลหลายเอาต์พุต
เป็นโมฆะ
runSignature(อินพุต Map<StringObject>, Map<StringObject> เอาต์พุต)
เหมือนกับ runSignature(Map, Map, String) แต่ไม่ต้องส่งผ่าน signatureKey สมมติว่าโมเดลมี SignatureDef 1 รายการ
เป็นโมฆะ
runSignature(แมป<สตริงออบเจ็กต์>อินพุต, แมป<สตริงออบเจ็กต์>เอาต์พุต, สตริง ลายเซ็นคีย์)
เรียกใช้การอนุมานโมเดลตาม SignatureDef ที่ให้ไว้ผ่าน signatureKey
เป็นโมฆะ
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 เป็นค่าว่างหรือว่างเปล่า หรือระบุชื่อไม่ถูกต้อง

สาธารณะ ยาว getLastNativeInferenceDurationNanoseconds ()

แสดงผลเวลาการอนุมานดั้งเดิม

สาธารณะ 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 และ Byte Buffer เป็นทางผ่าน อินพุตสำหรับประเภทพื้นฐาน ในขณะที่ประเภทสตริงต้องใช้ฟังก์ชัน (หลายมิติข้อมูล) ของอินพุตของอาร์เรย์ เมื่อใช้ Buffer เนื้อหาจะไม่เปลี่ยนแปลงจนกว่า การอนุมานโมเดลเสร็จสมบูรณ์แล้ว และผู้โทรต้องตรวจสอบว่า Buffer อยู่ที่ ตำแหน่งการอ่านที่เหมาะสม ค่า null จะใช้ได้ก็ต่อเมื่อผู้โทรใช้ Delegate ที่ช่วยให้จัดการบัฟเฟอร์ได้ และบัฟเฟอร์ดังกล่าวยังเชื่อมโยงกับ ป้อน Tensor
เอาต์พุต อาร์เรย์หลายมิติของข้อมูลเอาต์พุต หรือ Buffer ของประเภทพื้นฐาน เช่น int, Flo, Long และ Byte เมื่อใช้ Buffer ผู้โทรจะต้องตรวจสอบว่า มีการกำหนดตำแหน่งการเขียนที่เหมาะสม สามารถใช้ค่า Null ได้ ซึ่งมีประโยชน์สำหรับ ในบางกรณี เช่น หากผู้โทรใช้ Delegate ที่รองรับการบัฟเฟอร์ การทำงานร่วมกัน และบัฟเฟอร์ดังกล่าวยังถูกเชื่อมโยงกับเอาต์พุต Tensor (ดู Interpreter.Options#setAllowBufferHandleOutput(boolean)) หรือถ้ากราฟมีเอาต์พุตที่มีการกำหนดรูปทรงแบบไดนามิก และผู้โทรจะต้องสืบค้นรูปร่างเอาต์พุต Tensor หลังจากที่เรียกใช้การอนุมานแล้ว โดยจะดึงข้อมูลจากเอาต์พุตโดยตรง tensor (ผ่าน Tensor.asReadOnlyBuffer())

สาธารณะ เป็นโมฆะ runForMultipleInputsOutputs (อินพุต Object[], แมป<IntegerObject> เอาต์พุต)

เรียกใช้การอนุมานโมเดลหากโมเดลรับอินพุตหลายรายการหรือแสดงผลหลายเอาต์พุต

คำเตือน: 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<StringObject>, Map<StringObject> เอาต์พุต)

เหมือนกับ 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 ซึ่งจะปิดอยู่โดยค่าเริ่มต้น
ดูเพิ่มเติม