คลาสไดรเวอร์สำหรับขับเคลื่อนการอนุมานโมเดลด้วย TensorFlow Lite
หมายเหตุ: หากคุณไม่ต้องการเข้าถึงฟีเจอร์ API "ทดลอง" ใดๆ ด้านล่าง แนะนำให้ใช้ InterpreterApi และ InterpreterFactory แทนที่จะใช้ Interpreter โดยตรง
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);
}
โปรดทราบว่ามีความแตกต่างระหว่างรูปร่าง [] และรูปร่าง [1] สำหรับเอาต์พุตเทนเซอร์สตริงสเกลาร์:
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 เช่นเดียวกับรูปร่างเริ่มต้นของอินพุต
เมื่ออินพุตถูกจัดเตรียมเป็นอาร์เรย์ (หลายมิติ) เทนเซอร์อินพุตที่เกี่ยวข้องจะถูกปรับขนาดโดยปริยายตามรูปร่างของอาร์เรย์นั้น เมื่ออินพุตถูกระบุเป็นประเภท Buffer
จะไม่มีการปรับขนาดโดยนัย ผู้เรียกจะต้องตรวจสอบให้แน่ใจว่าขนาดไบต์ Buffer
ตรงกับของเทนเซอร์ที่เกี่ยวข้อง หรือปรับขนาดเทนเซอร์ก่อนผ่าน resizeInput(int, int[])
ข้อมูลรูปร่างและประเภทของเทนเซอร์สามารถรับได้ผ่านคลาส Tensor
ซึ่งมีให้ผ่าน getInputTensor(int)
และ getOutputTensor(int)
คำเตือน: Interpreter
ซ์ของล่าม ไม่ ปลอดภัยสำหรับเธรด Interpreter
เป็นเจ้าของทรัพยากรที่ ต้อง ได้รับการปลดปล่อยอย่างชัดเจนโดยการเรียกใช้ close()
ไลบรารี TFLite สร้างขึ้นจาก NDK API 19 ซึ่งอาจใช้งานได้กับ Android API ระดับต่ำกว่า 19 แต่ไม่รับประกัน
คลาสที่ซ้อนกัน
ระดับ | ล่ามตัวเลือก | คลาสตัวเลือกสำหรับควบคุมพฤติกรรมล่ามรันไทม์ |
คอนสตรัคชั่นสาธารณะ
ล่าม (ตัวเลือก ไฟล์ modelFile, Interpreter.Options ) เริ่มต้น Interpreter และระบุตัวเลือกสำหรับปรับแต่งพฤติกรรมของล่าม | |
วิธีการสาธารณะ
เป็นโมฆะ | จัดสรรเทนเซอร์ () อัปเดตการจัดสรรอย่างชัดเจนสำหรับเทนเซอร์ทั้งหมด หากจำเป็น |
เป็นโมฆะ | ปิด () เผยแพร่ทรัพยากรที่เกี่ยวข้องกับอินสแตนซ์ InterpreterApi |
ภายใน | |
เทนเซอร์ | getInputTensor (int inputIndex) รับเทนเซอร์ที่เกี่ยวข้องกับดัชนีอินพุตที่ให้มา |
ภายใน | getInputTensorCount () รับจำนวนเทนเซอร์อินพุต |
เทนเซอร์ | getInputTensorFromSignature ( สตริง inputName, String SignatureKey) รับเทนเซอร์ที่เกี่ยวข้องกับชื่ออินพุตที่ให้มาและชื่อวิธีลายเซ็น |
ยาว | getLastNativeInferenceDurationNanoseconds () ส่งกลับระยะเวลาการอนุมานดั้งเดิม |
ภายใน | |
เทนเซอร์ | getOutputTensor (int เอาท์พุทดัชนี) รับค่าเทนเซอร์ที่เกี่ยวข้องกับดัชนีเอาต์พุตที่ระบุ |
ภายใน | getOutputTensorCount () รับจำนวนเทนเซอร์เอาท์พุต |
เทนเซอร์ | getOutputTensorFromSignature ( สตริง ชื่อเอาต์พุต, สตริงลาย เซ็นคีย์) รับเทนเซอร์ที่เชื่อมโยงกับชื่อเอาต์พุตที่ระบุในวิธีการลายเซ็นเฉพาะ |
สตริง[] | |
สตริง[] | getSignatureKeys () รับรายการชื่อวิธีการส่งออก SignatureDef ที่มีอยู่ในโมเดล |
สตริง[] | |
เป็นโมฆะ | รีเซ็ตตัวแปรเทนเซอร์ () ขั้นสูง: รีเซ็ตเทนเซอร์ตัวแปรทั้งหมดเป็นค่าเริ่มต้น |
เป็นโมฆะ | resizeInput (int idx, int[] dims, บูลีนเข้มงวด) ปรับขนาดอินพุต idx-th ของโมเดลเนทิฟให้เป็นค่า dims ที่กำหนด |
เป็นโมฆะ | resizeInput (int idx, int[] สลัว) ปรับขนาดอินพุต idx-th ของโมเดลเนทิฟให้เป็นค่า dims ที่กำหนด |
เป็นโมฆะ | วิ่ง ( อินพุตวัตถุ , เอาต์พุต วัตถุ ) รันการอนุมานโมเดลหากโมเดลรับเพียงหนึ่งอินพุต และจัดเตรียมเอาต์พุตเพียงอันเดียว |
เป็นโมฆะ | runForMultipleInputsOutputs (อินพุต Object[] , แผนที่ < Integer , Object > เอาต์พุต) รันการอนุมานโมเดลหากโมเดลรับอินพุตหลายอินพุต หรือส่งคืนเอาต์พุตหลายเอาต์พุต |
เป็นโมฆะ | runSignature ( แมป < สตริง , วัตถุ > อินพุต, แมป < สตริง , วัตถุ > เอาต์พุต) เช่นเดียวกับ runSignature(Map, Map, String) แต่ไม่จำเป็นต้องส่ง SignatureKey โดยสมมติว่าโมเดลมี SignatureDef หนึ่งอัน |
เป็นโมฆะ | |
เป็นโมฆะ | setCancelled (ยกเลิกบูลีน) ขั้นสูง: ขัดจังหวะการอนุมานระหว่างการเรียก run(Object, Object) |
วิธีการสืบทอด
คอนสตรัคชั่นสาธารณะ
ล่าม สาธารณะ ( File modelFile)
เริ่มต้น Interpreter
พารามิเตอร์
modelFile | ไฟล์ของโมเดล TF Lite ที่ผ่านการฝึกอบรมมาแล้ว |
---|
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หาก modelFile ไม่ได้เข้ารหัสโมเดล TensorFlow Lite ที่ถูกต้อง |
---|
ล่าม สาธารณะ ( ไฟล์ modelFile, Interpreter.Options ตัวเลือก)
เริ่มต้น Interpreter
และระบุตัวเลือกสำหรับปรับแต่งพฤติกรรมของล่าม
พารามิเตอร์
modelFile | ไฟล์ของโมเดล TF Lite ที่ได้รับการฝึกอบรมล่วงหน้า |
---|---|
ตัวเลือก | ชุดตัวเลือกสำหรับปรับแต่งพฤติกรรมของล่าม |
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หาก modelFile ไม่ได้เข้ารหัสโมเดล TensorFlow Lite ที่ถูกต้อง |
---|
ล่าม สาธารณะ ( ByteBuffer byteBuffer)
เริ่มต้น Interpreter
ด้วย ByteBuffer
ของไฟล์โมเดล
ByteBuffer ไม่ควรได้รับการแก้ไขหลังจากการสร้าง Interpreter
ByteBuffer
อาจเป็นได้ทั้ง MappedByteBuffer
ที่หน่วยความจำแมปไฟล์โมเดล หรือ ByteBuffer
โดยตรงของ NativeOrder() ที่มีเนื้อหาไบต์ของโมเดล
พารามิเตอร์
ไบต์บัฟเฟอร์ |
---|
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | ถ้า byteBuffer ไม่ใช่ MappedByteBuffer หรือ ByteBuffer โดยตรงของ NativeOrder |
---|
ล่าม สาธารณะ (ตัวเลือก ByteBuffer byteBuffer, Interpreter.Options )
เริ่มต้น Interpreter
ด้วย ByteBuffer
ของไฟล์โมเดลและชุด Interpreter.Options
แบบกำหนดเอง
ByteBuffer
ไม่ควรได้รับการแก้ไขหลังจากการสร้าง Interpreter
ByteBuffer
อาจเป็นได้ทั้ง MappedByteBuffer
ที่หน่วยความจำแมปไฟล์โมเดล หรือ ByteBuffer
โดยตรงของ NativeOrder() ที่มีเนื้อหาไบต์ของโมเดล
พารามิเตอร์
ไบต์บัฟเฟอร์ | |
---|---|
ตัวเลือก |
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | ถ้า byteBuffer ไม่ใช่ MappedByteBuffer หรือ ByteBuffer โดยตรงของ NativeOrder |
---|
วิธีการสาธารณะ
โมฆะสาธารณะจัดสรร เทนเซอร์ ()
อัปเดตการจัดสรรอย่างชัดเจนสำหรับเทนเซอร์ทั้งหมด หากจำเป็น
สิ่งนี้จะเผยแพร่รูปร่างและการจัดสรรหน่วยความจำสำหรับเทนเซอร์ที่ขึ้นต่อกันโดยใช้รูปร่างเทนเซอร์อินพุตตามที่กำหนด
หมายเหตุ: การโทรนี้เป็น *ทางเลือกเท่านั้น* การจัดสรรเทนเซอร์จะเกิดขึ้นโดยอัตโนมัติระหว่างการดำเนินการ หากมีการปรับขนาดเทนเซอร์อินพุตใดๆ การเรียกนี้มีประโยชน์มากที่สุดในการกำหนดรูปร่างสำหรับเทนเซอร์เอาท์พุตใดๆ ก่อนที่จะรันกราฟ เช่น
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 ()
รับจำนวนเทนเซอร์อินพุต
สาธารณะ Tensor getInputTensorFromSignature ( สตริง ชื่ออินพุต, สตริงลาย เซ็นคีย์)
รับเทนเซอร์ที่เกี่ยวข้องกับชื่ออินพุตที่ให้มาและชื่อวิธีลายเซ็น
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลงได้
พารามิเตอร์
ชื่ออินพุต | กรอกชื่อในลายเซ็น |
---|---|
ลายเซ็นคีย์ | คีย์ลายเซ็นที่ระบุ SignatureDef อาจเป็นโมฆะได้หากโมเดลมีลายเซ็นเดียว |
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หาก inputName หรือ signatureKey เป็นโมฆะหรือว่างเปล่า หรือระบุชื่อไม่ถูกต้อง |
---|
int สาธารณะ getOutputIndex ( สตริง opName)
รับดัชนีของเอาต์พุตที่กำหนดชื่อ op ของเอาต์พุต
พารามิเตอร์
opName |
---|
สาธารณะ Tensor getOutputTensor (int outputIndex)
รับค่าเทนเซอร์ที่เกี่ยวข้องกับดัชนีเอาต์พุตที่ระบุ
หมายเหตุ: รายละเอียดเทนเซอร์เอาท์พุต (เช่น รูปร่าง) อาจไม่ได้รับการเติมข้อมูลทั้งหมดจนกว่าจะดำเนินการอนุมาน หากคุณต้องการรายละเอียดที่อัปเดต *ก่อน* เรียกใช้การอนุมาน (เช่น หลังจากปรับขนาดเทนเซอร์อินพุต ซึ่งอาจทำให้รูปร่างเทนเซอร์เอาท์พุตโมฆะ) ให้ใช้ allocateTensors()
เพื่อทริกเกอร์การจัดสรรและการแพร่กระจายรูปร่างอย่างชัดเจน โปรดทราบว่า สำหรับกราฟที่มีรูปร่างเอาต์พุตซึ่งขึ้นอยู่กับ *ค่า* อินพุต รูปร่างเอาต์พุตอาจไม่ถูกกำหนดอย่างสมบูรณ์จนกว่าจะทำการอนุมาน
พารามิเตอร์
ดัชนีเอาท์พุท |
---|
int สาธารณะ getOutputTensorCount ()
รับจำนวนเทนเซอร์เอาท์พุต
สาธารณะ Tensor getOutputTensorFromSignature ( ชื่อ เอาต์พุตสตริง, String SignatureKey)
รับเทนเซอร์ที่เชื่อมโยงกับชื่อเอาต์พุตที่ระบุในวิธีการลายเซ็นเฉพาะ
หมายเหตุ: รายละเอียดเทนเซอร์เอาท์พุต (เช่น รูปร่าง) อาจไม่ได้รับการเติมข้อมูลทั้งหมดจนกว่าจะดำเนินการอนุมาน หากคุณต้องการรายละเอียดที่อัปเดต *ก่อน* เรียกใช้การอนุมาน (เช่น หลังจากปรับขนาดเทนเซอร์อินพุต ซึ่งอาจทำให้รูปร่างเทนเซอร์เอาท์พุตโมฆะ) ให้ใช้ allocateTensors()
เพื่อทริกเกอร์การจัดสรรและการแพร่กระจายรูปร่างอย่างชัดเจน โปรดทราบว่า สำหรับกราฟที่มีรูปร่างเอาต์พุตซึ่งขึ้นอยู่กับ *ค่า* อินพุต รูปร่างเอาต์พุตอาจไม่ถูกกำหนดอย่างสมบูรณ์จนกว่าจะทำการอนุมาน
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลงได้
พารามิเตอร์
ชื่อเอาท์พุท | ชื่อผลงานในลายเซ็น |
---|---|
ลายเซ็นคีย์ | คีย์ลายเซ็นที่ระบุ SignatureDef อาจเป็นโมฆะได้หากโมเดลมีลายเซ็นเดียว |
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หาก outputName หรือ signatureKey เป็นโมฆะหรือว่างเปล่า หรือระบุชื่อไม่ถูกต้อง |
---|
สาธารณะ String[] getSignatureInputs ( String SignatureKey)
รับรายการอินพุต SignatureDefs สำหรับเมธอด signatureKey
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลงได้
พารามิเตอร์
ลายเซ็นคีย์ |
---|
สตริงสาธารณะ [] getSignatureKeys ()
รับรายการชื่อวิธีการส่งออก SignatureDef ที่มีอยู่ในโมเดล
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลงได้
สาธารณะ String[] getSignatureOutputs ( String SignatureKey)
รับรายการเอาต์พุต SignatureDefs สำหรับเมธอด signatureKey
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลงได้
พารามิเตอร์
ลายเซ็นคีย์ |
---|
โมฆะสาธารณะ รีเซ็ตVariableTensors ()
ขั้นสูง: รีเซ็ตเทนเซอร์ตัวแปรทั้งหมดเป็นค่าเริ่มต้น
หากเทนเซอร์แปรผันไม่มีบัฟเฟอร์ที่เกี่ยวข้อง ก็จะถูกรีเซ็ตเป็นศูนย์
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลงได้
โมฆะสาธารณะ resizeInput (int idx, int[] dims, บูลีนเข้มงวด)
ปรับขนาดอินพุต idx-th ของโมเดลเนทิฟให้เป็นค่า dims ที่กำหนด
เมื่อ `เข้มงวด` เป็น True จะสามารถปรับขนาดได้เฉพาะมิติที่ไม่รู้จักเท่านั้น ขนาดที่ไม่รู้จักจะแสดงเป็น "-1" ในอาร์เรย์ที่ส่งคืนโดย `Tensor.shapeSignature()`
พารามิเตอร์
รหัสประจำตัว | |
---|---|
สลัว | |
เข้มงวด |
โมฆะสาธารณะ resizeInput (int idx, int[] dims)
ปรับขนาดอินพุต idx-th ของโมเดลเนทิฟให้เป็นค่า dims ที่กำหนด
พารามิเตอร์
รหัสประจำตัว | |
---|---|
สลัว |
การรัน โมฆะสาธารณะ (อินพุต วัตถุ , เอาต์พุต วัตถุ )
รันการอนุมานโมเดลหากโมเดลรับเพียงหนึ่งอินพุต และจัดเตรียมเอาต์พุตเพียงอันเดียว
คำเตือน: API จะมีประสิทธิภาพมากกว่าหากใช้ Buffer
(โดยตรงมากกว่า แต่ไม่จำเป็น) เป็นประเภทข้อมูลอินพุต/เอาท์พุต โปรดพิจารณาใช้ Buffer
เพื่อฟีดและดึงข้อมูลดั้งเดิมเพื่อประสิทธิภาพที่ดีขึ้น รองรับประเภท Buffer
คอนกรีตต่อไปนี้:
-
ByteBuffer
- เข้ากันได้กับประเภท Tensor ดั้งเดิมพื้นฐาน -
FloatBuffer
- เข้ากันได้กับโฟลตเทนเซอร์ -
IntBuffer
- เข้ากันได้กับ int32 Tensors -
LongBuffer
- เข้ากันได้กับ int64 Tensors
Buffer
s หรือเป็นอินพุตสเกลาร์ พารามิเตอร์
ป้อนข้อมูล | อาร์เรย์หรืออาร์เรย์หลายมิติ หรือ Buffer ประเภทดั้งเดิมซึ่งรวมถึง int, float, long และ byte Buffer เป็นวิธีที่แนะนำในการส่งข้อมูลอินพุตขนาดใหญ่สำหรับประเภทดั้งเดิม ในขณะที่ประเภทสตริงจำเป็นต้องใช้เส้นทางอินพุตอาร์เรย์ (หลายมิติ) เมื่อใช้ Buffer เนื้อหาควรจะคงเดิมจนกว่าการอนุมานแบบจำลองจะเสร็จสิ้น และผู้เรียกต้องแน่ใจว่า Buffer อยู่ในตำแหน่งการอ่านที่เหมาะสม อนุญาตให้ใช้ค่า null ก็ต่อเมื่อผู้เรียกใช้ Delegate ที่อนุญาตให้บัฟเฟอร์จัดการการทำงานร่วมกัน และบัฟเฟอร์ดังกล่าวถูกผูกไว้กับอินพุต Tensor |
---|---|
เอาท์พุท | อาร์เรย์หลายมิติของข้อมูลเอาต์พุต หรือ Buffer ประเภทดั้งเดิม รวมถึง int, float, long และ byte เมื่อใช้ Buffer ผู้เรียกต้องแน่ใจว่าได้ตั้งค่าตำแหน่งการเขียนที่เหมาะสมแล้ว อนุญาตให้ใช้ค่า Null ได้ และมีประโยชน์ในบางกรณี เช่น หากผู้เรียกใช้ Delegate ที่อนุญาตให้บัฟเฟอร์จัดการ interop และบัฟเฟอร์ดังกล่าวถูกผูกไว้กับเอาท์พุต Tensor (โปรดดู Interpreter.Options#setAllowBufferHandleOutput(boolean) ) หรือหากกราฟมีเอาท์พุตที่มีรูปทรงแบบไดนามิก และผู้เรียกต้องสืบค้นรูปร่าง Tensor หลังจากการอนุมานถูกเรียกใช้ โดยดึงข้อมูลโดยตรงจากเทนเซอร์เอาท์พุต (ผ่าน Tensor.asReadOnlyBuffer() ) |
โมฆะสาธารณะ runForMultipleInputsOutputs (อินพุต Object[] , แผนที่ < Integer , Object > เอาต์พุต)
รันการอนุมานโมเดลหากโมเดลรับอินพุตหลายอินพุต หรือส่งคืนเอาต์พุตหลายเอาต์พุต
คำเตือน: API จะมีประสิทธิภาพมากกว่าหากใช้ Buffer
(ควรใช้โดยตรง แต่ไม่จำเป็น) เป็นประเภทข้อมูลอินพุต/เอาท์พุต โปรดพิจารณาใช้ Buffer
เพื่อฟีดและดึงข้อมูลดั้งเดิมเพื่อประสิทธิภาพที่ดีขึ้น รองรับประเภท Buffer
คอนกรีตต่อไปนี้:
-
ByteBuffer
- เข้ากันได้กับประเภท Tensor ดั้งเดิมพื้นฐาน -
FloatBuffer
- เข้ากันได้กับโฟลตเทนเซอร์ -
IntBuffer
- เข้ากันได้กับ int32 Tensors -
LongBuffer
- เข้ากันได้กับ int64 Tensors
Buffer
s หรือเป็นอินพุตสเกลาร์ หมายเหตุ: อนุญาตให้ใช้ค่า null
สำหรับองค์ประกอบ inputs
และ outputs
เฉพาะในกรณีที่ผู้เรียกใช้ Delegate
ที่อนุญาตให้บัฟเฟอร์จัดการการทำงานร่วมกัน และบัฟเฟอร์ดังกล่าวถูกผูกไว้กับ Tensor
อินพุตหรือเอาท์พุตที่สอดคล้องกัน
พารามิเตอร์
อินพุต | อาร์เรย์ของข้อมูลอินพุต อินพุตควรอยู่ในลำดับเดียวกันกับอินพุตของโมเดล อินพุตแต่ละรายการสามารถเป็นอาร์เรย์หรืออาร์เรย์หลายมิติ หรือ Buffer ประเภทดั้งเดิมซึ่งรวมถึง int, float, long และ byte Buffer เป็นวิธีที่แนะนำในการส่งข้อมูลอินพุตขนาดใหญ่ ในขณะที่ประเภทสตริงจำเป็นต้องใช้เส้นทางอินพุตอาร์เรย์ (หลายมิติ) เมื่อใช้ Buffer เนื้อหาควรจะคงเดิมจนกว่าการอนุมานโมเดลจะเสร็จสิ้น และผู้เรียกต้องแน่ใจว่า Buffer อยู่ในตำแหน่งการอ่านที่เหมาะสม |
---|---|
เอาท์พุท | ดัชนีเอาต์พุตการแมปแผนที่ไปยังอาร์เรย์หลายมิติของข้อมูลเอาต์พุตหรือ Buffer ประเภทดั้งเดิมรวมถึง int, float, long และ byte เพียงแต่ต้องเก็บรายการไว้สำหรับเอาต์พุตที่จะใช้ เมื่อใช้ Buffer ผู้เรียกต้องแน่ใจว่าได้ตั้งค่าตำแหน่งการเขียนที่เหมาะสมแล้ว แผนที่อาจว่างเปล่าสำหรับกรณีที่มีการใช้ตัวจับบัฟเฟอร์สำหรับข้อมูลเทนเซอร์เอาท์พุต หรือกรณีที่เอาท์พุตมีรูปทรงแบบไดนามิก และผู้เรียกต้องสืบค้นรูปร่างเทนเซอร์ Tensor หลังจากการอนุมานถูกเรียกใช้ โดยดึงข้อมูลโดยตรงจากเทนเซอร์เอาท์พุต ( ผ่าน Tensor.asReadOnlyBuffer() ) |
โมฆะสาธารณะ runSignature ( แมป < สตริง , วัตถุ > อินพุต, แมป < สตริง , วัตถุ > เอาต์พุต)
เช่นเดียวกับ runSignature(Map, Map, String)
แต่ไม่จำเป็นต้องส่ง SignatureKey โดยสมมติว่าโมเดลมี SignatureDef หนึ่งตัว หากโมเดลมี SignatureDef มากกว่าหนึ่งรายการ จะมีข้อยกเว้นเกิดขึ้น
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลงได้
พารามิเตอร์
อินพุต | |
---|---|
เอาท์พุท |
โมฆะสาธารณะ runSignature ( แมป < สตริง , วัตถุ > อินพุต, แมป < สตริง , วัตถุ > เอาต์พุต สตริง SignatureKey)
รันการอนุมานโมเดลตาม SignatureDef ที่ให้มาผ่าน signatureKey
ดู run(Object, Object)
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับประเภทข้อมูลอินพุตและเอาต์พุตที่อนุญาต
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลงได้
พารามิเตอร์
อินพุต | แผนที่จากชื่ออินพุตใน SignatureDef ไปยังวัตถุอินพุต |
---|---|
เอาท์พุท | แผนที่จากชื่อเอาต์พุตใน SignatureDef ไปจนถึงข้อมูลเอาต์พุต สิ่งนี้อาจจะว่างเปล่าหากผู้เรียกต้องการสืบค้นข้อมูล Tensor โดยตรงหลังจากการอนุมาน (เช่น หากรูปร่างเอาต์พุตเป็นไดนามิก หรือใช้ตัวจัดการบัฟเฟอร์เอาต์พุต) |
ลายเซ็นคีย์ | รหัสลายเซ็นระบุ SignatureDef |
ขว้าง
ข้อยกเว้นอาร์กิวเมนต์ที่ผิดกฎหมาย | หาก inputs เป็นโมฆะหรือว่างเปล่า หาก outputs หรือ signatureKey เป็นโมฆะ หรือหากเกิดข้อผิดพลาดขณะรันการอนุมาน |
---|
โมฆะสาธารณะ setCancelled (ยกเลิกบูลีน)
ขั้นสูง: ขัดจังหวะการอนุมานระหว่างการเรียก run(Object, Object)
ธงการยกเลิกจะถูกตั้งค่าเป็นจริงเมื่อมีการเรียกใช้ฟังก์ชันนี้ ล่ามจะตรวจสอบแฟล็กระหว่างการเรียกใช้ Op และหากเป็น true
ล่ามจะหยุดดำเนินการ ล่ามจะยังคงอยู่ในสถานะยกเลิกจนกว่าจะ "ไม่ยกเลิก" อย่างชัดเจนโดย setCancelled(false)
คำเตือน: นี่เป็น API ทดลองและอาจมีการเปลี่ยนแปลงได้
พารามิเตอร์
ยกเลิก | true ในการยกเลิกอนุมานด้วยวิธีที่ดีที่สุด false เพื่อดำเนินการต่อ |
---|
ขว้าง
IllegalStateException | หากล่ามไม่ได้เตรียมใช้งานด้วยตัวเลือกที่ยกเลิกได้ ซึ่งปิดไว้ตามค่าเริ่มต้น |
---|