فئة السائقين لتعزيز استنتاج النموذج باستخدام TensorFlow Lite.
ملاحظة: إذا لم تكن بحاجة إلى الوصول إلى أي من الأدوات "التجريبية" ميزات واجهة برمجة التطبيقات أدناه، وتفضل استخدامها استخدام كل من {8/}"Api" و"تفسيرٍ" بدلاً من استخدام ميزة "الترجمة الفورية" مباشرةً.
يتضمّن 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 نموذج مع توكو، وكذلك الأشكال الافتراضية للمدخلات.
عند توفير المُدخلات كصفائف (متعددة الأبعاد)، سيتم إدخال مؤشرات
ضمنيًا وفقًا لشكل تلك الصفيفة. عند توفير مصادر الإدخال على أنّها Buffer
فلن يتم إجراء أي تغيير ضمني؛ يجب أن يتأكد المتصل من أنّ حجم الملف Buffer
بايت
إما مطابقة للمتسابق المتناظر، أو أن تغير أولاً حجم التينور عبر resizeInput(int, int[])
. يمكن الحصول على معلومات شكل الموتّر ونوعه من خلال الفئة Tensor
المتاحة من خلال getInputTensor(int)
وgetOutputTensor(int)
.
تحذير: مثيلات Interpreter
غير آمنة لسلاسل المحادثات. Interpreter
يمتلك موارد يجب تحريرها صراحةً من خلال استدعاء close()
تم إنشاء مكتبة TFLite وفقًا للإصدار 19 من واجهة برمجة التطبيقات NDK API. ويمكن أن يعمل مع مستويات واجهات برمجة تطبيقات Android الأقدم من 19. لكنه ليس مضمونًا.
الفصول الدراسية المتداخلة
صنف | Interpreter.Options | فئة خيارات للتحكّم في سلوك ميزة "الترجمة الفورية" في بيئة التشغيل. |
الشركات المصنّعة العامة
المترجم الفوري(خيارات File modelFile، وInterpreter.Options)
يؤدي هذا الإجراء إلى إعداد
Interpreter وتحديد خيارات تخصيص سلوك ميزة "الترجمة الفورية". |
|
الطرق العامة
فراغ |
allocateTensors()
يتم تعديل عمليات التخصيص صراحةً لجميع وحدات قياس الأداء، إذا لزم الأمر.
|
فراغ |
إغلاق()
إصدار الموارد المرتبطة بالمثيل
InterpreterApi |
int | |
Tensor |
getInputTensor(int enterIndex)
يحصل على Tensor المرتبط بفهرس الإدخال المتوفر.
|
int |
getInputTensorCount()
للحصول على عدد مترابطات الإدخال.
|
Tensor |
getInputTensorFromSignature(سلسلة enterName، مفتاح توقيع سلسلة)
يحصل على Tensor المرتبط باسم الإدخال الخاص واسم طريقة التوقيع.
|
طويل |
getLastNativeInferenceDurationNanoseconds()
تعرض توقيت الاستنتاج الأصلي.
|
int | |
Tensor |
getOutputTensor(int objectIndex)
يحصل على Tensor المرتبط بفهرس الإخراج المقدَّم.
|
int |
getOutputTensorCount()
الحصول على عدد Tensors للمخرجات.
|
Tensor |
getOutputTensorFromSignature(سلسلة المخرجات Name, سلسلة توقيع)
الحصول على Tensor المرتبط باسم الإخراج المقدم بطريقة توقيع معينة.
|
String[] | |
String[] |
getSignatureKeys()
للحصول على قائمة بأسماء طرق SignatureDef التي تم تصديرها والمتاحة في النموذج.
|
String[] | |
فراغ |
resetVariableTensors()
إعدادات متقدّمة: لإعادة ضبط جميع قيم مترابطة المتغيّرات إلى القيمة التلقائية
|
فراغ |
resizeInput(int idx, int[] dims, boolean strict)
لتغيير حجم إدخال idx-th للنموذج الأصلي إلى وحدات تعتيم محددة.
|
فراغ |
resizeInput(int idx, int[] تتعلق بتعتيم الشاشة)
لتغيير حجم إدخال idx-th للنموذج الأصلي إلى وحدات تعتيم محددة.
|
فراغ | |
فراغ |
runForMultipleInputsOutputs(إدخالات Object[] وMap<عدد صحيح، Object>)
لتنفيذ استنتاج النموذج إذا كان النموذج يستخدم إدخالات متعددة أو يعرض مخرجات متعددة
|
فراغ |
runSignature(إدخالات الخريطة<String, Object> والمخرجات الخريطة<السلسلة والكائنات>)
مثل
runSignature(Map, Map, String) ولكنها لا تتطلب تمرير مفتاح توقيع،
مع افتراض أن النموذج يحتوي على SignatureDef واحد. |
فراغ | |
فراغ |
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 byteBuffer)
يتم إعداد Interpreter
باستخدام ByteBuffer
من ملف نموذج.
يجب عدم تعديل ByteBuffer بعد إنشاء Interpreter
. تشير رسالة الأشكال البيانية
يمكن أن تكون السمة ByteBuffer
إما MappedByteBuffer
الذي يربط بين ملف الذاكرة في ملف النموذج، أو
توجيه ByteBuffer
لـNativeOrder() الذي يحتوي على محتوى البايت من أحد النماذج.
المعلمات
byteBuffer |
---|
الرميات
IllegalArgumentException | إذا لم تكن byteBuffer علامة MappedByteBuffer أو
قيمة مباشرة ByteBuffer من originalOrder.
|
---|
علنية الترجمة الفورية (خيارات ByteBuffer byteBuffer، Interpreter.Options)
يتم إعداد Interpreter
باستخدام ByteBuffer
من ملف نموذج ومجموعة من
مخصص Interpreter.Options
يجب عدم تعديل ByteBuffer
بعد إنشاء Interpreter
. يمكن أن تكون قيمة ByteBuffer
إما MappedByteBuffer
التي تحدّده الذاكرة
ملف نموذج أو ByteBuffer
مباشر من nonOrder() يحتوي على محتوى وحدات البايت
من نموذج ما.
المعلمات
byteBuffer | |
---|---|
الخيارات |
الرميات
IllegalArgumentException | إذا لم تكن byteBuffer علامة MappedByteBuffer أو
قيمة مباشرة ByteBuffer من originalOrder.
|
---|
الطرق العامة
علنية فراغ allocateTensors ()
يتم تعديل عمليات التخصيص صراحةً لجميع وحدات قياس الأداء، إذا لزم الأمر.
سيؤدي ذلك إلى نشر الأشكال وعمليات تخصيص الذاكرة لأعداد المتوترات التابعة باستخدام المدخلات. شكل أو أشكال مترابطة(Tenor) كما هو موضح.
ملاحظة: هذه المكالمة *اختيارية تمامًا*. سيتم تخصيص 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
علنية تدخُّل دفاعي getInputIndex (سلسلة opName)
الحصول على فهرس للمدخل حسب اسم العملية للمدخل
المعلمات
opName |
---|
علنية Tensor getInputTensor (int enterIndex)
يحصل على Tensor المرتبط بفهرس الإدخال المتوفر.
المعلمات
inputIndex |
---|
علنية تدخُّل دفاعي getInputTensorCount ()
للحصول على عدد مترابطات الإدخال.
علنية Tensor getInputTensorFromSignature (سلسلة enterName, سلسلة مفتاح توقيع)
يحصل على Tensor المرتبط باسم الإدخال الخاص واسم طريقة التوقيع.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المعلمات
inputName | اسم الإدخال في التوقيع |
---|---|
signatureKey | يمكن ترك مفتاح التوقيع الذي يحدد SignatureDef، فارغًا إذا كان النموذج يحتوي على توقيع واحد. |
الرميات
IllegalArgumentException | إذا كانت قيمة inputName أو signatureKey فارغة أو خالية،
أو تم تقديم اسم غير صالح.
|
---|
علنية تدخُّل دفاعي getOutputIndex (سلسلة opName)
الحصول على فهرس للناتج وفقًا لاسم عملية المخرجات.
المعلمات
opName |
---|
علنية Tensor getOutputTensor (int consentIndex)
يحصل على Tensor المرتبط بفهرس الإخراج المقدَّم.
ملاحظة: قد لا تتم تعبئة تفاصيل مترابط الإخراج (مثل الشكل) بالكامل إلا بعد الاستنتاج
يتم تنفيذه. إذا كنت بحاجة إلى تفاصيل محدّثة *قبل* تنفيذ الاستنتاج (على سبيل المثال، بعد تغيير حجم
إدخال متنسورة، والذي قد يلغي صلاحية أشكال متّجه الإخراج)، استخدم allocateTensors()
من أجل
تؤدي إلى إطلاق التخصيص ونشر الأشكال بشكل صريح. لاحظ أنه بالنسبة للرسومات البيانية ذات أشكال الإخراج
التي تعتمد على *قيم* المدخلات، فقد لا يتم تحديد شكل الإخراج بشكل كامل حتى
تشغيل الاستنتاج.
المعلمات
outputIndex |
---|
علنية تدخُّل دفاعي getOutputTensorCount ()
الحصول على عدد Tensors للمخرجات.
علنية Tensor getOutputTensorFromSignature (سلسلة اسم الإخراج سلسلة مفتاح التوقيع)
الحصول على Tensor المرتبط باسم الإخراج المقدم بطريقة توقيع معينة.
ملاحظة: قد لا تتم تعبئة تفاصيل مترابط الإخراج (مثل الشكل) بالكامل إلا بعد الاستنتاج
يتم تنفيذه. إذا كنت بحاجة إلى تفاصيل محدّثة *قبل* تنفيذ الاستنتاج (على سبيل المثال، بعد تغيير حجم
إدخال متنسورة، والذي قد يلغي صلاحية أشكال متّجه الإخراج)، استخدم allocateTensors()
من أجل
تؤدي إلى إطلاق التخصيص ونشر الأشكال بشكل صريح. لاحظ أنه بالنسبة للرسومات البيانية ذات أشكال الإخراج
التي تعتمد على *قيم* المدخلات، فقد لا يتم تحديد شكل الإخراج بشكل كامل حتى
تشغيل الاستنتاج.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المعلمات
outputName | اسم الإخراج في التوقيع |
---|---|
signatureKey | يمكن ترك مفتاح التوقيع الذي يحدد SignatureDef، فارغًا إذا كان النموذج يحتوي على توقيع واحد. |
الرميات
IllegalArgumentException | إذا كانت قيمة outputName أو signatureKey لا قيمة أو
تم إدخال اسم فارغ أو غير صالح.
|
---|
علنية String[] getSignatureInputs (سلسلة مفتاح التوقيع)
للحصول على قائمة مدخلات SignatureDefs للطريقة signatureKey
.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المعلمات
signatureKey |
---|
علنية String[] getSignatureKeys ()
للحصول على قائمة بأسماء طرق SignatureDef التي تم تصديرها والمتاحة في النموذج.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
علنية String[] getSignatureOutputs (سلسلة مفتاح التوقيع)
الحصول على قائمة مخرجات SignatureDefs للطريقة signatureKey
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المعلمات
signatureKey |
---|
علنية فراغ resetVariableTensors ()
إعدادات متقدّمة: لإعادة ضبط جميع قيم مترابطة المتغيّرات إلى القيمة التلقائية
إذا لم يكن هناك مخزن مؤقت مرتبط بمتغير tensor، ستتم إعادة ضبطه على الصفر.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
علنية فراغ resizeInput (int idx, int[] تتعلق بالتعتيم، منطقي)
لتغيير حجم إدخال idx-th للنموذج الأصلي إلى وحدات تعتيم محددة.
عندما تكون القيمة "متشددة" على "صحيح"، لا يمكن تغيير حجم سوى الأبعاد غير المعروفة. السمات غير المعروفة هي يشار إليه باسم `-1` في الصفيف الذي يتم عرضه بواسطة `Tensor.shapeSignature()`.
المعلمات
idx. | |
---|---|
إضاءة خافتة | |
متشدّد |
علنية فراغ resizeInput (int idx, int[] تعتيم)
لتغيير حجم إدخال idx-th للنموذج الأصلي إلى وحدات تعتيم محددة.
المعلمات
idx. | |
---|---|
إضاءة خافتة |
علنية فراغ تشغيل (إدخال كائن، إخراج الكائن)
تعمل على تشغيل استنتاج النموذج إذا كان النموذج يستخدم إدخالاً واحدًا فقط ويوفر ناتجًا واحدًا فقط.
تحذير: تكون واجهة برمجة التطبيقات أكثر كفاءة إذا كان Buffer
(يُفضل أن يكون مباشرًا، ولكن غير مطلوب)
تُستخدم كنوع بيانات الإدخال/الإخراج. يُرجى استخدام Buffer
للحصول على الخلاصات والجلب
بيانات أولية لتحقيق أداء أفضل. تشمل أنواع Buffer
الملموسة التالية:
مدعوم:
ByteBuffer
- متوافق مع أي نوع من أنواع Tensor الأساسية.FloatBuffer
- متوافق مع العشرات العائمة.IntBuffer
: متوافق مع int32 TensorsLongBuffer
- متوافق مع int64 Tensors.
Buffer
أو كمدخلات عددية.المعلمات
مصدر الإدخال | مصفوفة أو مصفوفة متعددة الأبعاد، أو Buffer من الأنواع الأساسية
بما في ذلك int وfloat وlong وbyte. إنّ Buffer هي الطريقة المفضّلة لتمرير القيم الكبيرة.
بيانات الإدخال للأنواع الأولية، بينما تتطلب أنواع السلاسل استخدام (متعدد الأبعاد)
مسار إدخال الصفيفة. عند استخدام Buffer ، يجب أن يظل محتواه بدون تغيير حتى
يتم استنتاج النموذج، ويجب أن يتأكّد المتصل من أنّ قيمة Buffer
موضع القراءة المناسب. يُسمَح بقيمة null فقط إذا كان المتصل يستخدم
Delegate الذي يتيح إمكانية التشغيل التفاعلي لمؤشر المخزن المؤقت، وتم ربط هذا المخزن المؤقت
الإدخال Tensor |
---|---|
output | مصفوفة متعددة الأبعاد من بيانات المخرجات أو Buffer من الأنواع الأساسية
بما في ذلك int وfloat وlong وbyte. عند استخدام Buffer ، يجب أن يتأكد المتصل من أنّ المتصل
من تعيين موضع الكتابة المناسب. يُسمح باستخدام القيمة الفارغة، وهي مفيدة
حالات معيّنة، مثلًا إذا كان المتصل يستخدم Delegate تسمح بمؤشر المخزن المؤقت
إمكانية التشغيل التفاعلي، وتم ربط مثل هذا المخزن المؤقت بالمخرجات Tensor (يُرجى الاطّلاع أيضًا على Interpreter.Options#setAllowBufferHandleOutput(boolean))،
أو إذا كان الرسم البياني يحتوي على مخرجات ذات شكل ديناميكي وكان على المتصل الاستعلام عن شكل Tensor الناتج بعد استدعاء الاستنتاج، ما يؤدي إلى جلب البيانات مباشرةً من الناتج
Tenor (عبر Tensor.asReadOnlyBuffer() ). |
علنية فراغ runForMultipleInputsOutputs (إدخالات Object[]، الخريطة<عدد صحيح والكائن> المخرجات)
لتنفيذ استنتاج النموذج إذا كان النموذج يستخدم إدخالات متعددة أو يعرض مخرجات متعددة
تحذير: تكون واجهة برمجة التطبيقات أكثر كفاءة إذا كانت Buffer
(يُفضَّل أن تكون مباشرة، ولكن غير مطلوبة)
تُستخدم كأنواع بيانات الإدخال/الإخراج. يُرجى استخدام Buffer
للحصول على الخلاصات والجلب
بيانات أولية لتحقيق أداء أفضل. تشمل أنواع Buffer
الملموسة التالية:
مدعوم:
ByteBuffer
- متوافق مع أي نوع من أنواع Tensor الأساسية.FloatBuffer
- متوافق مع العشرات العائمة.IntBuffer
: متوافق مع int32 TensorsLongBuffer
- متوافق مع int64 Tensors.
Buffer
أو كمدخلات عددية.
ملاحظة: قيم null
للعناصر الفردية لـ inputs
وoutputs
هي
السماح بذلك فقط إذا كان المتصل يستخدم Delegate
تسمح بإمكانية التشغيل المتداخل لمؤشر المخزن المؤقت
تم ربط هذا المخزن المؤقت بالمدخلات أو المخرجات Tensor
(المخرجات) المقابلة.
المعلمات
مصادر الإدخال | صفيف من بيانات الإدخال. يجب أن تكون المدخلات بالترتيب نفسه كمدخلات
الأمثل. يمكن أن يكون كل إدخال مصفوفة أو مصفوفة متعددة الأبعاد، أو يمكن أن يمثل Buffer
الأنواع الأولية بما في ذلك int وfloat وlong وbyte. Buffer هي الطريقة المفضّلة.
لتمرير بيانات المدخلات الكبيرة، بينما تتطلب أنواع السلاسل استخدام الصفيف (متعدد الأبعاد)
مسار الإدخال. عند استخدام Buffer ، يجب أن يظل المحتوى بدون تغيير إلى أن يتم استخدام النموذج
يتم الاستنتاج، ويجب أن يتأكّد المتصل من أنّ "Buffer " في الوقت المناسب
موضع القراءة. |
---|---|
النتائج | مؤشرات ناتج تعيين الخريطة إلى صفائف متعددة الأبعاد لبيانات المخرجات أو Buffer من الأنواع الأساسية بما في ذلك int وfloat وlong وبايت. يحتاج فقط إلى جعل
الإدخالات للمخرجات التي سيتم استخدامها. عند استخدام Buffer ، يجب أن يتأكد المتصل من أنّ المتصل
من تعيين موضع الكتابة المناسب. قد تكون الخريطة فارغة للحالات التي
تُستخدَم مؤشرات المخزن المؤقت لبيانات مترابط الإخراج أو الحالات التي يتم فيها استخدام المُخرجات ديناميكيًا
ويجب على المتصل الاستعلام عن شكل الناتج Tensor بعد الاستنتاج
تم استدعاء، جلب البيانات مباشرةً من متوتر الإخراج (عبر Tensor.asReadOnlyBuffer() ). |
علنية فراغ runSignature (الخريطة<سلسلة, الكائنات> مدخلات, الخريطة<السلسلة والكائن> مخرجات)
مثل runSignature(Map, Map, String)
ولكنها لا تتطلب تمرير مفتاح توقيع،
مع افتراض أن النموذج يحتوي على SignatureDef واحد. إذا كان النموذج يحتوي على أكثر من SignatureDef،
وطرح استثناء.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المعلمات
مصادر الإدخال | |
---|---|
النتائج |
علنية فراغ runSignature (الخريطة<سلسلة, الكائن> مدخلات, الخريطة<السلسلة والكائن> مخرجات، السلسلة مفتاح التوقيع)
لتنفيذ استنتاج النموذج بناءً على SignatureDef المقدَّمة من خلال signatureKey
.
راجِع run(Object, Object)
للحصول على مزيد من التفاصيل حول مصادر الإدخال والإخراج المسموح بها.
وأنواع البيانات المختلفة.
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المعلمات
مصادر الإدخال | خريطة من اسم الإدخال في SignatureDef إلى كائن إدخال. |
---|---|
النتائج | ربط من اسم الإخراج في SignatureDef إلى بيانات الإخراج قد يكون هذا فارغًا إذا
يريد المتصل الاستعلام عن بيانات Tensor مباشرةً بعد الاستنتاج (على سبيل المثال، إذا كانت
أو كان شكل الإخراج ديناميكيًا، أو يتم استخدام مؤشرات المخزن المؤقت للمخرجات). |
signatureKey | مفتاح التوقيع الذي يحدّد SignatureDef |
الرميات
IllegalArgumentException | إذا كانت السمة inputs فارغة أو خالية، أو إذا كانت السمة outputs أو
لا قيمة signatureKey هي قيمة أو إذا حدث خطأ عند تشغيل الاستنتاج.
|
---|
علنية فراغ setCancelled (تم إلغاء الإجراء المنطقي)
إعدادات متقدّمة: تمنع الاستنتاج في منتصف المكالمة الواردة إلى run(Object, Object)
.
سيتم ضبط علامة الإلغاء على "صحيح" عند استدعاء هذه الدالة. سوف يترجم المترجم الفوري
تأكَّد من العلامة بين استدعاءات العمليات، وإذا كانت true
، سيتوقّف المترجم الفوري
والتنفيذ. سيظل المترجم الفوري في حالة الإلغاء إلى أن يتم "إلغاء الإلغاء" صراحةً. في
setCancelled(false)
تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.
المعلمات
تم الإلغاء | true لإلغاء الاستنتاج بأفضل جهد من false إلى
سيرته الذاتية. |
---|
الرميات
IllegalStateException | إذا لم يتم إعداد المترجم الفوري باستخدام واجهة برمجة التطبيقات القابلة للإزالة والذي يتم إيقافه افتراضيًا. |
---|