เข้าร่วม Women in ML Symposium ในวันที่ 7 ธันวาคม ลงทะเบียนตอนนี้

Interpreter

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ล่าม ชั้นสุดท้ายสาธารณะ

คลาสไดรเวอร์เพื่อขับเคลื่อนการอนุมานโมเดลด้วย TensorFlow Lite

หมายเหตุ: หากคุณไม่ต้องการเข้าถึงคุณลักษณะ "ทดลอง" API ใดๆ ด้านล่างนี้ คุณต้องการใช้ InterpreterApi และ InterpreterFactory แทนที่จะใช้ล่ามโดยตรง

Interpreter สรุปโมเดล TensorFlow Lite ที่ได้รับการฝึกอบรมล่วงหน้า ซึ่งการดำเนินการจะถูกดำเนินการสำหรับการอนุมานแบบจำลอง

ตัวอย่างเช่น หากโมเดลรับอินพุตเพียงอินพุตเดียวและส่งคืนเอาต์พุตเพียงเอาต์พุตเดียว:

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);
 }
 

หากแบบจำลองใช้หรือสร้างเทนเซอร์สตริง:

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);
 }
 

ลำดับของอินพุตและเอาต์พุตถูกกำหนดเมื่อแปลงโมเดล TensorFlow เป็นโมเดล TensorFlowLite ด้วย Toco เช่นเดียวกับรูปร่างเริ่มต้นของอินพุต

เมื่ออินพุตถูกจัดให้เป็นอาร์เรย์ (หลายมิติ) เทนเซอร์อินพุตที่สอดคล้องกันจะถูกปรับขนาดโดยปริยายตามรูปร่างของอาร์เรย์นั้น เมื่อมีการระบุอินพุตเป็นประเภท Buffer จะไม่มีการปรับขนาดโดยปริยาย ผู้เรียกต้องตรวจสอบให้แน่ใจว่าขนาดไบต์ Buffer ตรงกับเทนเซอร์ที่เกี่ยวข้องหรือว่าก่อนอื่นจะปรับขนาดเทนเซอร์ผ่าน resizeInput(int, int[]) ข้อมูลรูปร่างและประเภทของเทนเซอร์สามารถรับได้ผ่านคลาส Tensor ซึ่งมีให้ผ่านทาง getInputTensor(int) และ getOutputTensor(int)

คำเตือน: อินสแตนซ์ Interpreter ไม่ ปลอดภัยสำหรับเธรด Interpreter เป็นเจ้าของทรัพยากรที่ ต้อง ได้รับการปลดปล่อยอย่างชัดเจนโดยการเรียกใช้ close()

ไลบรารี TFLite สร้างขึ้นโดยเทียบกับ NDK API 19 ซึ่งอาจใช้งานได้กับระดับ Android API ที่ต่ำกว่า 19 แต่ไม่รับประกัน

คลาสที่ซ้อนกัน

ระดับ ล่ามตัวเลือก คลาสอ็อพชันสำหรับควบคุมพฤติกรรมล่ามรันไทม์

ผู้สร้างสาธารณะ

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

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

โมฆะ
จัดสรรเทนเซอร์ ()
อัปเดตการจัดสรรสำหรับเทนเซอร์ทั้งหมดโดยชัดแจ้ง หากจำเป็น
โมฆะ
ปิด ()
เผยแพร่ทรัพยากรที่เกี่ยวข้องกับอินสแตนซ์ InterpreterApi
int
getInputIndex ( สตริง opName)
รับดัชนีของอินพุตที่กำหนดชื่อ op ของอินพุต
เทนเซอร์
getInputTensor (อินพุทอินพุทอินเด็กซ์)
รับค่าเทนเซอร์ที่เกี่ยวข้องกับดัชนีอินพุตที่ให้มา
int
getInputTensorCount ()
รับจำนวนเทนเซอร์อินพุต
เทนเซอร์
getInputTensorFromSignature (ชื่ออินพุต สตริง , สตริง ซิกเนเจอร์คีย์)
รับค่าเทนเซอร์ที่เกี่ยวข้องกับชื่ออินพุตที่ให้มาและชื่อวิธีการลงลายมือชื่อ
ยาว
getLastNativeInferenceDurationNanoseconds ()
ส่งกลับเวลาการอนุมานดั้งเดิม
int
getOutputIndex ( สตริง opName)
รับดัชนีของเอาต์พุตตามชื่อ op ของเอาต์พุต
เทนเซอร์
getOutputTensor (อินท์ outputIndex)
รับค่าเทนเซอร์ที่เชื่อมโยงกับดัชนีเอาต์พุตที่จัดเตรียมไว้
int
getOutputTensorCount ()
รับจำนวนเทนเซอร์เอาต์พุต
เทนเซอร์
getOutputTensorFromSignature (ชื่อเอาต์พุต สตริง , สตริง ลายเซ็นคีย์)
รับค่าเทนเซอร์ที่เกี่ยวข้องกับชื่อเอาต์พุตที่ระบุในวิธีการลายเซ็นเฉพาะ
สตริง[]
getSignatureInputs ( สตริง ซิกเนเจอร์คีย์)
รับรายการอินพุต SignatureDefs สำหรับเมธอด signatureKey
สตริง[]
getSignatureKeys ()
รับรายชื่อเมธอดที่เอ็กซ์พอร์ตของ SignatureDef ที่มีอยู่ในโมเดล
สตริง[]
getSignatureOutputs ( สตริง ซิกเนเจอร์คีย์)
รับรายการผลลัพธ์ของ SignatureDefs สำหรับเมธอด signatureKey
โมฆะ
รีเซ็ตตัวแปรเทนเซอร์ ()
ขั้นสูง: รีเซ็ตเทนเซอร์ตัวแปรทั้งหมดเป็นค่าเริ่มต้น
โมฆะ
resizeInput (int idx, int[] หรี่ลง, บูลีนเข้มงวด)
ปรับขนาดอินพุตที่ idx ของโมเดลดั้งเดิมเป็นค่าหรี่ที่กำหนด
โมฆะ
resizeInput (int idx, int[] หรี่ลง)
ปรับขนาดอินพุตที่ idx ของโมเดลดั้งเดิมเป็นค่าหรี่ที่กำหนด
โมฆะ
เรียกใช้ ( วัตถุ อินพุต, เอาต์พุต วัตถุ )
รันการอนุมานโมเดล หากโมเดลรับอินพุตเพียงอินพุตเดียว และระบุเอาต์พุตเพียงเอาต์พุตเดียว
โมฆะ
runForMultipleInputsOutputs (อินพุต Object [] , แมป < Integer , Object > เอาต์พุต)
รันการอนุมานโมเดล หากโมเดลรับอินพุตหลายอินพุต หรือส่งคืนเอาต์พุตหลายรายการ
โมฆะ
runSignature ( Map < String , Object > inputs, Map < String , Object > outputs)
เหมือนกับ runSignature(Map, Map, String) แต่ไม่ต้องการส่ง signatureKey สมมติว่าโมเดลมี SignatureDef หนึ่งอัน
โมฆะ
runSignature ( Map < String , Object > inputs, Map < String , Object > outputs, String signatureKey)
รันการอนุมานโมเดลตาม SignatureDef ที่จัดเตรียมผ่าน signatureKey
โมฆะ
setCancelled (ยกเลิกบูลีน)
ขั้นสูง: ขัดจังหวะการอนุมานระหว่างการโทรเพื่อ run(Object, Object)

วิธีการสืบทอด

ผู้สร้างสาธารณะ

ล่าม สาธารณะ ( ไฟล์ modelFile)

เริ่มต้น Interpreter

พารามิเตอร์
รุ่นไฟล์ ไฟล์ของโมเดล TF Lite ที่ผ่านการฝึกอบรมล่วงหน้า
ขว้าง
IllegalArgumentException ถ้า modelFile ไม่ได้เข้ารหัสโมเดล TensorFlow Lite ที่ถูกต้อง

ล่าม สาธารณะ ( ไฟล์ modelFile, ตัวเลือก ล่าม ตัวเลือก)

เริ่มต้น Interpreter และระบุตัวเลือกสำหรับการกำหนดพฤติกรรมของล่ามเอง

พารามิเตอร์
รุ่นไฟล์ ไฟล์ของรุ่น TF Lite ที่ผ่านการฝึกอบรมมาแล้ว
ตัวเลือก ชุดตัวเลือกสำหรับปรับแต่งพฤติกรรมของล่าม
ขว้าง
IllegalArgumentException ถ้า modelFile ไม่ได้เข้ารหัสโมเดล TensorFlow Lite ที่ถูกต้อง

ล่าม สาธารณะ ( ByteBuffer byteBuffer)

เริ่มต้น Interpreter ด้วย ByteBuffer ของไฟล์โมเดล

ไม่ควรแก้ไข ByteBuffer หลังจากสร้าง Interpreter ByteBuffer สามารถเป็นได้ทั้ง MappedByteBuffer ที่หน่วยความจำจับคู่ไฟล์โมเดล หรือ ByteBuffer โดยตรงของ nativeOrder() ที่มีเนื้อหาไบต์ของโมเดล

พารามิเตอร์
byteBuffer
ขว้าง
IllegalArgumentException ถ้า byteBuffer ไม่ใช่ MappedByteBuffer หรือ ByteBuffer โดยตรงของ nativeOrder

ล่าม สาธารณะ (ตัวเลือก ByteBuffer byteBuffer, Interpreter.Options )

เริ่มต้น Interpreter ด้วย ByteBuffer ของไฟล์โมเดลและชุดของ Interpreter.Options ที่กำหนดเอง

ไม่ควรแก้ไข ByteBuffer หลังจากสร้าง Interpreter ByteBuffer สามารถเป็นได้ทั้ง MappedByteBuffer ที่หน่วยความจำจับคู่ไฟล์โมเดล หรือ ByteBuffer โดยตรงของ nativeOrder() ที่มีเนื้อหาไบต์ของโมเดล

พารามิเตอร์
byteBuffer
ตัวเลือก
ขว้าง
IllegalArgumentException ถ้า byteBuffer ไม่ใช่ MappedByteBuffer หรือ ByteBuffer โดยตรงของ nativeOrder

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

โมฆะสาธารณะ จัดสรรTensors ()

อัปเดตการจัดสรรสำหรับเทนเซอร์ทั้งหมดโดยชัดแจ้ง หากจำเป็น

สิ่งนี้จะเผยแพร่รูปร่างและการจัดสรรหน่วยความจำสำหรับเทนเซอร์ที่ขึ้นต่อกันโดยใช้รูปร่างเทนเซอร์อินพุตตามที่กำหนด

หมายเหตุ: การโทรนี้เป็น *ไม่บังคับ* การจัดสรรเทนเซอร์จะเกิดขึ้นโดยอัตโนมัติระหว่างการดำเนินการ หากมีการปรับขนาดเทนเซอร์อินพุต การเรียกนี้มีประโยชน์มากที่สุดในการกำหนดรูปร่างสำหรับเทนเซอร์เอาต์พุตก่อนดำเนินการกราฟ เช่น

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)

รับดัชนีของอินพุตที่กำหนดชื่อ op ของอินพุต

พารามิเตอร์
opName

เทนเซอร์ สาธารณะ getInputTensor (int inputIndex)

รับค่าเทนเซอร์ที่เกี่ยวข้องกับดัชนีอินพุตที่ให้มา

พารามิเตอร์
อินพุตดัชนี

int สาธารณะ getInputTensorCount ()

รับจำนวนเทนเซอร์อินพุต

เทนเซอร์ สาธารณะ getInputTensorFromSignature ( String inputName, String SignatureKey)

รับค่าเทนเซอร์ที่เกี่ยวข้องกับชื่ออินพุตที่ให้มาและชื่อวิธีการลงลายมือชื่อ

คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง

พารามิเตอร์
อินพุตชื่อ ใส่ชื่อในลายเซ็น
ลายเซ็นคีย์ คีย์ลายเซ็นที่ระบุ SignatureDef สามารถเป็นโมฆะได้หากโมเดลมีลายเซ็นเดียว
ขว้าง
IllegalArgumentException หาก inputName หรือ signatureKey เป็นค่าว่างหรือว่างเปล่า หรือระบุชื่อที่ไม่ถูกต้อง

สาธารณะ Long getLastNativeInferenceDurationNanoseconds ()

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

int สาธารณะ getOutputIndex ( สตริง opName)

รับดัชนีของเอาต์พุตตามชื่อ op ของเอาต์พุต

พารามิเตอร์
opName

เทนเซอร์ สาธารณะ getOutputTensor (int outputIndex)

รับค่าเทนเซอร์ที่เชื่อมโยงกับดัชนีเอาต์พุตที่จัดเตรียมไว้

หมายเหตุ: รายละเอียดเทนเซอร์เอาต์พุต (เช่น รูปร่าง) อาจไม่สามารถเติมข้อมูลได้เต็มที่จนกว่าจะทำการอนุมาน หากคุณต้องการรายละเอียดที่อัปเดต *ก่อน* เรียกใช้การอนุมาน (เช่น หลังจากปรับขนาดอินพุตเทนเซอร์ ซึ่งอาจทำให้รูปร่างเทนเซอร์เอาต์พุตใช้ไม่ได้) ให้ใช้ allocateTensors() เพื่อทริกเกอร์การจัดสรรและการเผยแพร่รูปร่างอย่างชัดเจน โปรดทราบว่า สำหรับกราฟที่มีรูปร่างเอาต์พุตที่ขึ้นอยู่กับอินพุต *ค่า* รูปร่างของเอาต์พุตอาจไม่ได้ถูกกำหนดอย่างสมบูรณ์จนกว่าจะทำการอนุมาน

พารามิเตอร์
ผลลัพธ์ดัชนี

int สาธารณะ getOutputTensorCount ()

รับจำนวนเทนเซอร์เอาต์พุต

เทนเซอร์ สาธารณะ getOutputTensorFromSignature (ชื่อเอาต์พุต สตริง , สตริง ลายเซ็นคีย์)

รับค่าเทนเซอร์ที่เกี่ยวข้องกับชื่อเอาต์พุตที่ระบุในวิธีการลายเซ็นเฉพาะ

หมายเหตุ: รายละเอียดเทนเซอร์เอาต์พุต (เช่น รูปร่าง) อาจไม่สามารถเติมข้อมูลได้เต็มที่จนกว่าจะทำการอนุมาน หากคุณต้องการรายละเอียดที่อัปเดต *ก่อน* เรียกใช้การอนุมาน (เช่น หลังจากปรับขนาดอินพุตเทนเซอร์ ซึ่งอาจทำให้รูปร่างเทนเซอร์เอาต์พุตใช้ไม่ได้) ให้ใช้ allocateTensors() เพื่อทริกเกอร์การจัดสรรและการเผยแพร่รูปร่างอย่างชัดเจน โปรดทราบว่า สำหรับกราฟที่มีรูปร่างเอาต์พุตที่ขึ้นอยู่กับอินพุต *ค่า* รูปร่างของเอาต์พุตอาจไม่ได้ถูกกำหนดอย่างสมบูรณ์จนกว่าจะทำการอนุมาน

คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง

พารามิเตอร์
outputName ชื่อผลงานในลายเซ็น
ลายเซ็นคีย์ คีย์ลายเซ็นที่ระบุ SignatureDef สามารถเป็นโมฆะได้หากโมเดลมีลายเซ็นเดียว
ขว้าง
IllegalArgumentException หาก outputName หรือ signatureKey เป็นโมฆะหรือว่างเปล่า หรือระบุชื่อที่ไม่ถูกต้อง

สตริงสาธารณะ[] getSignatureInputs ( String signatureKey)

รับรายการอินพุต SignatureDefs สำหรับเมธอด signatureKey

คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง

พารามิเตอร์
ลายเซ็นคีย์

สตริงสาธารณะ[] getSignatureKeys ()

รับรายชื่อเมธอดที่เอ็กซ์พอร์ตของ SignatureDef ที่มีอยู่ในโมเดล

คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง

สตริงสาธารณะ[] getSignatureOutputs ( String signatureKey)

รับรายการผลลัพธ์ของ SignatureDefs สำหรับเมธอด signatureKey

คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง

พารามิเตอร์
ลายเซ็นคีย์

โมฆะสาธารณะ resetVariableTensors ()

ขั้นสูง: รีเซ็ตเทนเซอร์ตัวแปรทั้งหมดเป็นค่าเริ่มต้น

หากตัวแปรเทนเซอร์ไม่มีบัฟเฟอร์ที่เกี่ยวข้อง ค่านั้นจะถูกรีเซ็ตเป็นศูนย์

คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง

โมฆะ resizeInput สาธารณะ (int idx, int[] หรี่ลง, บูลีนเข้มงวด)

ปรับขนาดอินพุตที่ idx ของโมเดลดั้งเดิมเป็นค่าหรี่ที่กำหนด

เมื่อ "เข้มงวด" เป็นจริง จะปรับขนาดเฉพาะส่วนที่ไม่รู้จักได้ มิติข้อมูลที่ไม่รู้จักจะถูกระบุเป็น '-1' ในอาร์เรย์ที่ส่งคืนโดย 'Tensor.shapeSignature()'

พารามิเตอร์
idx
ติ่มซำ
เข้มงวด

โมฆะ resizeInput สาธารณะ (int idx, int[] หรี่ลง)

ปรับขนาดอินพุตที่ idx ของโมเดลดั้งเดิมเป็นค่าหรี่ที่กำหนด

พารามิเตอร์
idx
ติ่มซำ

เรียกใช้ โมฆะสาธารณะ (อินพุต วัตถุ , เอาต์พุต วัตถุ )

รันการอนุมานโมเดล หากโมเดลรับอินพุตเพียงอินพุตเดียว และระบุเอาต์พุตเพียงเอาต์พุตเดียว

คำเตือน: API จะมีประสิทธิภาพมากขึ้นหากใช้ Buffer (ควรเป็นโดยตรง แต่ไม่จำเป็น) เป็นประเภทข้อมูลอินพุต/เอาต์พุต โปรดพิจารณาใช้ Buffer เพื่อป้อนและดึงข้อมูลเบื้องต้นเพื่อประสิทธิภาพที่ดีขึ้น รองรับประเภท Buffer คอนกรีตต่อไปนี้:

  • ByteBuffer - เข้ากันได้กับประเภท Tensor ดั้งเดิม
  • FloatBuffer - เข้ากันได้กับ float Tensors
  • IntBuffer - เข้ากันได้กับ int32 Tensors
  • LongBuffer - เข้ากันได้กับ int64 Tensors
โปรดทราบว่าประเภทบูลีนได้รับการสนับสนุนเป็นอาร์เรย์เท่านั้น ไม่ใช่ Buffer หรือเป็นอินพุตสเกลาร์

พารามิเตอร์
ป้อนข้อมูล อาร์เรย์หรืออาร์เรย์หลายมิติ หรือ Buffer ประเภทดั้งเดิม ได้แก่ int, float, long และ byte Buffer เป็นวิธีที่แนะนำในการส่งข้อมูลอินพุตขนาดใหญ่สำหรับประเภทดั้งเดิม ในขณะที่ประเภทสตริงจำเป็นต้องใช้เส้นทางอินพุตอาร์เรย์ (หลายมิติ) เมื่อใช้ Buffer เนื้อหาควรไม่เปลี่ยนแปลงจนกว่าจะมีการอนุมานแบบจำลอง และผู้เรียกต้องแน่ใจว่า Buffer อยู่ที่ตำแหน่งการอ่านที่เหมาะสม null จะได้รับอนุญาตก็ต่อเมื่อผู้เรียกกำลังใช้ Delegate ที่อนุญาตให้มีการจัดการบัฟเฟอร์ interop และบัฟเฟอร์ดังกล่าวถูกผูกไว้กับอินพุต Tensor
ผลผลิต อาร์เรย์ข้อมูลเอาต์พุตแบบหลายมิติ หรือ Buffer ประเภทดั้งเดิม รวมถึง int, float, long และ byte เมื่อใช้ Buffer ผู้เรียกต้องแน่ใจว่าตั้งค่าตำแหน่งการเขียนที่เหมาะสม อนุญาตให้ใช้ค่า Null และมีประโยชน์สำหรับบางกรณี เช่น หากผู้เรียกใช้ Delegate ที่อนุญาตให้บัฟเฟอร์จัดการ interop และบัฟเฟอร์ดังกล่าวถูกผูกไว้กับเอาต์พุต Tensor (โปรดดู Interpreter.Options#setAllowBufferHandleOutput(boolean) ) หรือหากกราฟมีเอาต์พุตที่มีรูปทรงแบบไดนามิก และผู้เรียกต้องสอบถามรูปร่างของ Tensor เอาต์พุตหลังจากเรียกใช้การอนุมานแล้ว โดยจะดึงข้อมูลโดยตรงจากเมตริกซ์เอาต์พุต (ผ่าน Tensor.asReadOnlyBuffer() )

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

รันการอนุมานโมเดล หากโมเดลรับอินพุตหลายอินพุต หรือส่งคืนเอาต์พุตหลายรายการ

คำเตือน: API จะมีประสิทธิภาพมากขึ้นหากใช้ Buffer (ควรตรง แต่ไม่จำเป็น) เป็นประเภทข้อมูลอินพุต/เอาต์พุต โปรดพิจารณาใช้ Buffer เพื่อป้อนและดึงข้อมูลเบื้องต้นเพื่อประสิทธิภาพที่ดีขึ้น รองรับประเภท Buffer คอนกรีตต่อไปนี้:

  • ByteBuffer - เข้ากันได้กับประเภท Tensor ดั้งเดิม
  • FloatBuffer - เข้ากันได้กับ float Tensors
  • IntBuffer - เข้ากันได้กับ int32 Tensors
  • LongBuffer - เข้ากันได้กับ int64 Tensors
โปรดทราบว่าประเภทบูลีนได้รับการสนับสนุนเป็นอาร์เรย์เท่านั้น ไม่ใช่ Buffer หรือเป็นอินพุตสเกลาร์

หมายเหตุ: null สำหรับองค์ประกอบภายในของ inputs และ outputs จะได้รับอนุญาตก็ต่อเมื่อผู้เรียกใช้ Delegate ที่อนุญาตให้บัฟเฟอร์จัดการ interop และบัฟเฟอร์ดังกล่าวถูกผูกไว้กับอินพุตหรือเอาต์พุต Tensor ที่เกี่ยวข้อง

พารามิเตอร์
อินพุต อาร์เรย์ของข้อมูลอินพุต อินพุตควรอยู่ในลำดับเดียวกับอินพุตของโมเดล อินพุตแต่ละรายการสามารถเป็นอาร์เรย์หรืออาร์เรย์หลายมิติ หรือ Buffer ประเภทดั้งเดิม เช่น int, float, long และ byte Buffer เป็นวิธีที่แนะนำในการส่งข้อมูลอินพุตขนาดใหญ่ ในขณะที่ประเภทสตริงจำเป็นต้องใช้เส้นทางอินพุตอาร์เรย์ (หลายมิติ) เมื่อใช้ Buffer เนื้อหาควรไม่เปลี่ยนแปลงจนกว่าจะมีการอนุมานแบบจำลอง และผู้เรียกต้องแน่ใจว่า Buffer อยู่ที่ตำแหน่งการอ่านที่เหมาะสม
ผลลัพธ์ การทำแผนที่ดัชนีเอาต์พุตไปยังอาร์เรย์หลายมิติของข้อมูลเอาต์พุตหรือ Buffer ประเภทดั้งเดิมรวมถึง int, float, long และ byte มันเพียงต้องการเก็บรายการสำหรับผลลัพธ์ที่จะใช้ เมื่อใช้ Buffer ผู้เรียกต้องแน่ใจว่าตั้งค่าตำแหน่งการเขียนที่เหมาะสม แผนที่อาจว่างเปล่าสำหรับกรณีที่ตัวจัดการบัฟเฟอร์ตัวใดตัวหนึ่งใช้สำหรับข้อมูลเทนเซอร์เอาต์พุต หรือกรณีที่เอาต์พุตมีรูปร่างแบบไดนามิกและผู้เรียกต้องสอบถามรูปร่าง Tensor เอาต์พุตหลังจากเรียกใช้การอนุมานแล้ว โดยจะดึงข้อมูลโดยตรงจากเทนเซอร์เอาต์พุต ( ผ่าน Tensor.asReadOnlyBuffer() )

โมฆะสาธารณะ runSignature ( Map < String , Object > inputs, Map < String , Object > outputs)

เหมือนกับ runSignature(Map, Map, String) แต่ไม่ต้องการส่ง signatureKey สมมติว่าโมเดลมี SignatureDef หนึ่งอัน หากโมเดลมี SignatureDef มากกว่าหนึ่งตัว จะมีการยกเว้น

คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง

พารามิเตอร์
อินพุต
ผลลัพธ์

โมฆะสาธารณะ runSignature ( Map < String , Object > inputs, Map < String , Object > outputs, String SignatureKey)

รันการอนุมานโมเดลตาม SignatureDef ที่จัดเตรียมผ่าน signatureKey

ดู run(Object, Object) สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับประเภทข้อมูลอินพุตและเอาต์พุตที่อนุญาต

คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง

พารามิเตอร์
อินพุต แผนที่จากชื่ออินพุตใน SignatureDef ไปยังวัตถุอินพุต
ผลลัพธ์ แผนที่จากชื่อเอาต์พุตใน SignatureDef ไปยังข้อมูลเอาต์พุต สิ่งนี้อาจว่างเปล่าหากผู้เรียกต้องการสอบถามข้อมูล Tensor โดยตรงหลังจากการอนุมาน (เช่น หากรูปร่างเอาต์พุตเป็นไดนามิก หรือใช้ตัวจัดการบัฟเฟอร์เอาต์พุต)
ลายเซ็นคีย์ รหัสลายเซ็นระบุ SignatureDef
ขว้าง
IllegalArgumentException หาก inputs เป็นโมฆะหรือว่างเปล่า หาก outputs หรือซิก signatureKey เป็นโมฆะ หรือหากมีข้อผิดพลาดเกิดขึ้นเมื่อเรียกใช้การอนุมาน

โมฆะสาธารณะ setCancelled (ยกเลิกบูลีน)

ขั้นสูง: ขัดจังหวะการอนุมานระหว่างการโทรเพื่อ run(Object, Object)

แฟล็กการยกเลิกจะถูกตั้งค่าเป็นจริงเมื่อมีการเรียกใช้ฟังก์ชันนี้ ล่ามจะตรวจสอบแฟล็กระหว่างการเรียกใช้ Op และหากเป็น true ล่ามจะหยุดการดำเนินการ ล่ามจะยังคงอยู่ในสถานะที่ถูกยกเลิกจนกว่าจะมีการ "ยกเลิก" โดย setCancelled(false) อย่างชัดเจน

คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลง

พารามิเตอร์
ยกเลิก true ที่จะยกเลิกการอนุมานอย่างดีที่สุด false เพื่อดำเนินการต่อ
ขว้าง
IllegalStateException หากล่ามไม่ได้เริ่มต้นด้วยตัวเลือกที่ยกเลิกได้ ซึ่งโดยค่าเริ่มต้นจะปิด
ดูสิ่งนี้ด้วย