Interpreter

مترجم

فئة السائقين لاستنتاج استنتاج النماذج من خلال TensorFlow Lite

ملاحظة: إذا لم تكن بحاجة إلى الوصول إلى أي من الميزات "التجريبية" لواجهة برمجة التطبيقات الواردة أدناه، ننصحك باستخدام ترجمات intererApi والترجمة الفورية بدلاً من استخدام ميزة "الترجمة الفورية" مباشرةً.

تحتوي السمة 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 مقارنةً بالإصدار 19 من واجهة NDK API. يمكن أن تعمل هذه الميزة مع مستويات واجهة برمجة تطبيقات Android التي تقلّ عن 19 عامًا، ولكنّها غير مضمونة.

الصفوف المتداخلة

صنف Interpreter.Options فئة خيارات للتحكّم في سلوك المترجم الفوري في وقت التشغيل

الإنشاء العام

مترجم(ملف formFile)
يؤدي هذا الإعداد إلى إعداد Interpreter.
الترجمة الفورية(نموذج ملف، خيارات Interpreter.Options)
تعمل هذه السياسة على إعداد Interpreter وتحديد الخيارات لتخصيص سلوك ميزة "الترجمة الفورية".
مترجم(ByteBuffer byteBuffer)
يتم إعداد Interpreter مع ByteBuffer من ملف النموذج.
مترجم(خيارات ByteBuffer byteBuffer، خيارات Interpreter.Options)
تعمل هذه السياسة على إعداد Interpreter باستخدام ByteBuffer لملف نموذج ومجموعة من Interpreter.Options المخصّصة.

الطرق العامة

void
allocateTensors()
تحدّث التوزيعات بشكل صريح لجميع الموترات، إذا لزم الأمر.
void
Close()
إلغاء حجز الموارد المرتبطة بالمثيل InterpreterApi
int
getInputIndex(سلسلة opName)
للحصول على فهرس لمدخل يحدد اسم العملية للمدخل.
جهاز استشعار
getInputTensor(int enterIndex)
للحصول على Tensor المرتبط بفهرس الإدخال المقدم.
int
getInputTensorCount()
للحصول على عدد موترات الإدخال.
جهاز استشعار
getInputTensorFromSignature(String conversionName, String signatureKey)
للحصول على Tensor المرتبط باسم الإدخال واسم طريقة التوقيع
طويل
getLastNativeInferenceDurationNanoseconds()
تعرض توقيت الاستنتاج الأصلي.
int
getOutputIndex(سلسلة opName)
للحصول على فهرس مُخرج وفقًا لاسم عملية للمخرجات.
جهاز استشعار
getOutputTensor(int generateIndex)
للحصول على Tensor المرتبط بفهرس الإخراج المقدم.
int
getOutputTensorCount()
للحصول على عدد موجات المخرجات.
جهاز استشعار
getOutputTensorFromSignature(سلسلة الاعتماد outName ومفتاح توقيع سلسلة)
لإحضار Tensor المرتبط باسم الإخراج المقدم في طريقة توقيع محددة.
سلسلة[]
getSignatureInputs(String signatureKey)
للحصول على قائمة مدخلات SignatureDefs للطريقة signatureKey.
سلسلة[]
getSignatureKeys()
للحصول على قائمة بأسماء طرق SignatureDef التي تم تصديرها والمتاحة في النموذج.
سلسلة[]
getSignatureOutputs(String signatureKey)
للحصول على قائمة مخرجات SignatureDefs للطريقة signatureKey.
void
resetVariableTensors()
متقدم: إعادة ضبط جميع المتغيّرات المتغيرة إلى القيمة التلقائية.
void
resizeInput(int idx, int[] dims, boolean strict)
لتغيير حجم الإدخال رقم التعريف ID للنموذج الأصلي إلى وحدات تعتيم محددة.
void
resizeInput(int idx, int[] Dis)
لتغيير حجم الإدخال رقم التعريف ID للنموذج الأصلي إلى وحدات تعتيم محددة.
void
run(إدخال كائن، إخراج كائن)
يتم تشغيل استنتاج نموذج إذا كان النموذج يأخذ إدخالاً واحدًا فقط ويقدّم ناتجًا واحدًا فقط.
void
runForMultipleInputsOutputs(إدخالات Object[]، ومخرجات خريطة<عدد صحيح، ومخرجات كائن>)
يتم تشغيل استنتاج النموذج إذا أخذ النموذج مدخلات متعددة أو يعرض مخرجات متعددة.
void
runSignature(مُدخلات<String، Objectخريطة<سلسلة، مخرجات Object>)
تشبه السمة runSignature(Map, Map, String) ولكنها لا تتطلّب تمرير مفتاح توقيع، بافتراض أنّ النموذج يحتوي على SignatureDef واحد.
void
runSignature(إدخالات خريطة<سلسلة، Objectخريطة<سلسلة، مخرجات Objectسلسلة مفتاح التوقيع)
يتم تشغيل استنتاج نموذج استنادًا إلى SignatureDef المقدَّم من خلال signatureKey.
void
setCancelled(تم إلغاء القيم المنطقية)
متقدِّم: يقاطع الاستنتاج في منتصف المكالمة إلى run(Object, Object).

الطرق المكتسَبة

الإنشاء العام

علني مترجم (ملف نموذجملف)

يؤدي هذا الإعداد إلى إعداد Interpreter.

المَعلمات
modelFile ملف نموذج TF Lite المدرَّب مسبقًا.
الرميات
IllegalArgumentException إذا لم يتم ترميز نموذج TensorFlow Lite للترميز modelFile.

علني مترجم (نموذج ملف، Interpreter.Options)

تعمل هذه السياسة على إعداد Interpreter وتحديد الخيارات لتخصيص سلوك ميزة "الترجمة الفورية".

المَعلمات
modelFile ملف لنموذج TF Lite المدرَّب مسبقًا
الخيارات مجموعة من الخيارات لتخصيص سلوك المترجم
الرميات
IllegalArgumentException إذا لم يتم ترميز نموذج TensorFlow Lite للترميز modelFile.

public مترجم (ByteBuffer byteBuffer)

يتم إعداد Interpreter مع ByteBuffer من ملف النموذج.

يجب عدم تعديل ByteBuffer بعد إنشاء Interpreter. يمكن أن تكون السمة ByteBuffer إما MappedByteBuffer يضبط الذاكرة على ملف نموذج أو نوع ByteBuffer مباشر من الدالةNativeOrder() والتي تحتوي على محتوى وحدات البايت الخاصة بنموذج.

المَعلمات
byteBuffer
الرميات
IllegalArgumentException إذا لم يكن byteBuffer MappedByteBuffer أو ByteBuffer مباشرًا من الأصليOrder.

public مترجم (خيارات ByteBuffer byteBuffer، Interpreter.Options)

تعمل هذه السياسة على إعداد Interpreter باستخدام ByteBuffer لملف نموذج ومجموعة من Interpreter.Options المخصّصة.

يجب عدم تعديل ByteBuffer بعد إنشاء Interpreter. يمكن أن تكون السمة ByteBuffer إما MappedByteBuffer يضبط فيها الذاكرة ملف نموذج أو ByteBuffer مباشر للقيم الأصليةOrder() يحتوي على محتوى البايت الخاص بنموذج.

المَعلمات
byteBuffer
الخيارات
الرميات
IllegalArgumentException إذا لم يكن byteBuffer MappedByteBuffer أو ByteBuffer مباشرًا من الأصليOrder.

الطرق العامة

public إبطال allocateTensors ()

تحدّث التوزيعات بشكل صريح لجميع الموترات، إذا لزم الأمر.

سيؤدي هذا إلى نشر الأشكال وعمليات تخصيص الذاكرة للموترات التابعة باستخدام أشكال موصّل الإدخال كما هو موضَّح.

ملاحظة: هذه المكالمة *اختيارية تمامًا*. يتم تخصيص الموتّر تلقائيًا أثناء التنفيذ في حال تغيير حجم أي أواني إدخال. يساعد هذا الطلب بشكل كبير في تحديد الأشكال لأي موتر إخراج قبل تنفيذ الرسم البياني، مثل

 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

public int getInputIndex (سلسلة opName)

للحصول على فهرس لمدخل يحدد اسم العملية للمدخل.

المَعلمات
opName

public Tensor getInputTensor (int enterIndex)

للحصول على Tensor المرتبط بفهرس الإدخال المقدم.

المَعلمات
inputIndex

public int getInputTensorCount ()

للحصول على عدد موترات الإدخال.

public Tensor getInputTensorFromSignature (String integrationName, String signatureKey)

للحصول على Tensor المرتبط باسم الإدخال واسم طريقة التوقيع

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المَعلمات
inputName أدخل الاسم في التوقيع.
signatureKey يمكن أن يكون مفتاح التوقيع الذي يحدّد SignatureDef فارغًا إذا كان النموذج يحتوي على توقيع واحد.
الرميات
IllegalArgumentException إذا كان inputName أو signatureKey فارغًا أو فارغًا، أو تم تقديم اسم غير صالح.

public طويل getLastNativeInferenceDurationNanoseconds ()

تعرض توقيت الاستنتاج الأصلي.

public int getOutputIndex (سلسلة opName)

للحصول على فهرس مُخرج وفقًا لاسم عملية للمخرجات.

المَعلمات
opName

Public Tensor getOutputTensor (int تعليمات برمجية)

للحصول على Tensor المرتبط بفهرس الإخراج المقدم.

ملاحظة: قد لا تتم تعبئة تفاصيل موصّل الإخراج (مثل الشكل) بالكامل إلا بعد تنفيذ الاستنتاج. إذا كنت بحاجة إلى تعديل تفاصيل *قبل* تنفيذ الاستنتاج (على سبيل المثال، بعد تغيير حجم موتّر الإدخال، ما قد يؤدي إلى إلغاء صلاحية أشكال مجسّم الإخراج)، استخدِم allocateTensors() لتشغيل التخصيص ونشر الأشكال بشكل صريح. بالنسبة إلى الرسوم البيانية التي تتضمّن أشكال الإخراج التي تعتمد على *قيم* الإدخال، قد لا يتم تحديد شكل الناتج بالكامل إلى أن يتم تنفيذ الاستنتاج.

المَعلمات
outputIndex

public int getOutputTensorCount ()

للحصول على عدد موجات المخرجات.

public Tensor getOutputTensorFromSignature (سلسلة}switchName, سلسلة مفتاح التوقيع)

لإحضار Tensor المرتبط باسم الإخراج المقدم في طريقة توقيع محددة.

ملاحظة: قد لا تتم تعبئة تفاصيل موصّل الإخراج (مثل الشكل) بالكامل إلا بعد تنفيذ الاستنتاج. إذا كنت بحاجة إلى تعديل تفاصيل *قبل* تنفيذ الاستنتاج (على سبيل المثال، بعد تغيير حجم موتّر الإدخال، ما قد يؤدي إلى إلغاء صلاحية أشكال مجسّم الإخراج)، استخدِم allocateTensors() لتشغيل التخصيص ونشر الأشكال بشكل صريح. بالنسبة إلى الرسوم البيانية التي تتضمّن أشكال الإخراج التي تعتمد على *قيم* الإدخال، قد لا يتم تحديد شكل الناتج بالكامل إلى أن يتم تنفيذ الاستنتاج.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المَعلمات
outputName اسم الإخراج في التوقيع
signatureKey يمكن أن يكون مفتاح التوقيع الذي يحدّد SignatureDef فارغًا إذا كان النموذج يحتوي على توقيع واحد.
الرميات
IllegalArgumentException إذا كان الحقل outputName أو signatureKey فارغًا أو فارغًا، أو إذا تم تقديم اسم غير صالح.

public String[] getSignatureInputs (String signatureKey)

للحصول على قائمة مدخلات SignatureDefs للطريقة signatureKey.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المَعلمات
signatureKey

public String[] getSignatureKeys ()

للحصول على قائمة بأسماء طرق SignatureDef التي تم تصديرها والمتاحة في النموذج.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

public سلسلة[] getSignatureOutputs (سلسلة signatureKey)

للحصول على قائمة مخرجات SignatureDefs للطريقة signatureKey.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المَعلمات
signatureKey

متاح للجميع إلغاء resetVariableTensors ()

متقدم: إعادة ضبط جميع المتغيّرات المتغيرة إلى القيمة التلقائية.

إذا لم يكن للمتوتر المتغير مخزن مؤقت مرتبط، ستتم إعادة ضبطه على صفر.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

public إبطال resizeInput (int idx, int[] dims, boolean strict)

لتغيير حجم الإدخال رقم التعريف ID للنموذج الأصلي إلى وحدات تعتيم محددة.

عندما تكون قيمة "strict" صحيحة، لا يمكن تغيير حجم سوى الأبعاد غير المعروفة فقط. تتم الإشارة إلى الأبعاد غير المعروفة على أنّها "-1" في الصفيف الذي يعرضه "Tensor.shapeSignature() ".

المَعلمات
idx
dims
متشدّد

public إبطال resizeInput (int idx, int[] Dis)

لتغيير حجم الإدخال رقم التعريف ID للنموذج الأصلي إلى وحدات تعتيم محددة.

المَعلمات
idx
dims

علني إلغاء run (إدخال كائن، إخراج كائن)

يتم تشغيل استنتاج نموذج إذا كان النموذج يأخذ إدخالاً واحدًا فقط ويقدّم ناتجًا واحدًا فقط.

تحذير: تكون واجهة برمجة التطبيقات أكثر فعالية إذا تم استخدام Buffer (يُفضَّل أن تكون مباشرة، ولكنها غير مطلوبة) كنوع بيانات الإدخال/الإخراج. ننصحك باستخدام السمة Buffer لخلاصة البيانات الأساسية واسترجاعها لتحقيق أداء أفضل. يُسمح باستخدام أنواع Buffer الملموسة التالية:

  • ByteBuffer: متوافق مع أي نوع Tensor أساسي أساسي.
  • FloatBuffer: متوافقة مع أجهزة Tensor العائمة.
  • "IntBuffer" متوافق مع أجهزة int32 Tensors.
  • LongBuffer: متوافق مع أجهزة int64 Tensors
يُرجى العلم أنّ الأنواع المنطقية متاحة فقط كصفائف، وليس Buffer كمدخلات عددية.

المَعلمات
مصدر الإدخال مصفوفة أو مصفوفة متعددة الأبعاد، أو Buffer من الأنواع الأساسية، بما في ذلك عدد صحيح، وعدد عشري، وطويل، وبايت. إنّ العلامة Buffer هي الطريقة المفضّلة لتمرير بيانات إدخال كبيرة للأنواع الأساسية، في حين تتطلب أنواع السلاسل استخدام مسار إدخال المصفوفة (متعددة الأبعاد). عند استخدام Buffer، يجب أن يبقى محتواه بدون تغيير إلى أن يتم استنتاج النموذج، ويجب أن يتأكّد المتصل من ضبط Buffer في موضع القراءة المناسب. غير مسموح بالقيمة null إلا إذا كان المتصل يستخدم Delegate يتيح إمكانية التشغيل التفاعلي لمقبض المخزن المؤقت، وتم ربط هذا المخزن المؤقت بالإدخال Tensor.
الإنتاج مصفوفة متعددة الأبعاد من بيانات المخرجات أو Buffer من الأنواع الأساسية، بما في ذلك عدد صحيح وعدد عشري وطويل وبايت. عند استخدام Buffer، يجب أن يتأكّد المتصل من ضبطه على موضع الكتابة المناسب. ويُسمح باستخدام قيمة فارغة وهي مفيدة في حالات معيّنة، على سبيل المثال إذا كان المتصل يستخدم Delegate يتيح إمكانية التشغيل التفاعلي للمخزن المؤقت، وتم ربط هذا المخزن المؤقت بالمخرجات Tensor (راجِع أيضًا Interpreter.Options#setAllowBufferHandleOutput(boolean))، أو إذا كان الرسم البياني يستخدم مخرجات على شكل أشكال بشكل ديناميكي، ويجب أن يحصل المتصل على مخرجات بشكل ديناميكي من خلال Tensor.Tensor.asReadOnlyBuffer()

عامة إلغاء runForMultipleInputsOutputs (إدخالات Object[]، خريطة<عدد صحيح، كائن> مخرجات)

يتم تشغيل استنتاج النموذج إذا أخذ النموذج مدخلات متعددة أو يعرض مخرجات متعددة.

تحذير: تكون واجهة برمجة التطبيقات أكثر فعالية في حال استخدام Buffer (يُفضَّل أن تكون مباشرة، ولكنها غير مطلوبة) كأنواع بيانات الإدخال/الإخراج. ننصحك باستخدام السمة Buffer لخلاصة البيانات الأساسية واسترجاعها لتحقيق أداء أفضل. يُسمح باستخدام أنواع Buffer الملموسة التالية:

  • ByteBuffer: متوافق مع أي نوع Tensor أساسي أساسي.
  • FloatBuffer: متوافقة مع أجهزة Tensor العائمة.
  • "IntBuffer" متوافق مع أجهزة int32 Tensors.
  • LongBuffer: متوافق مع أجهزة int64 Tensors
يُرجى العلم أنّ الأنواع المنطقية متاحة فقط كصفائف، وليس Buffer كمدخلات عددية.

ملاحظة: لا يُسمح بالقيم null للعناصر غير المرئية في الترميزَين inputs وoutputs إلا إذا كان المتصل يستخدم Delegate يسمح بإمكانية التشغيل التفاعلي لمقبض المخزن المؤقت، وتم ربط هذا المخزن المؤقت بالمدخلات أو الإخراج المقابلة Tensor.

المَعلمات
المدخلات صفيفة من بيانات الإدخال. يجب أن تكون المدخلات بنفس ترتيب مدخلات النموذج. يمكن أن يكون كل إدخال مصفوفة أو مصفوفة متعددة الأبعاد، أو Buffer من الأنواع الأساسية، بما في ذلك عدد صحيح وعدد عشري وطويل وبايت. إنّ Buffer هي الطريقة المفضّلة لتمرير بيانات إدخال كبيرة، في حين تتطلب أنواع السلاسل استخدام مسار إدخال المصفوفة (متعددة الأبعاد). عند استخدام السمة Buffer، يجب أن يبقى المحتوى بدون تغيير إلى أن يتم استنتاج النموذج، ويجب أن يتأكّد المتصل من ضبط Buffer في موضع القراءة المناسب.
المخرجات مؤشرات ناتج تعيين الخريطة إلى مصفوفات متعدّدة الأبعاد من البيانات الناتجة أو Buffer من الأنواع الأساسية، بما في ذلك عدد صحيح وعدد عشري وطويل وبايت. وتحتاج فقط إلى الاحتفاظ بالإدخالات حتى يتم استخدام المخرجات. عند استخدام Buffer، يجب أن يتأكّد المتصل من ضبطه على موضع الكتابة المناسب. قد تكون الخريطة فارغة في الحالات التي يتم فيها استخدام مقابض المخزن المؤقت مع بيانات منظّم الإخراج، أو الحالات التي يتم فيها تشكيل المخرجات ديناميكيًا ويجب على المتصل الاستعلام عن شكل Tensor الناتج بعد استدعاء الاستنتاج، واسترجاع البيانات مباشرةً من موصّل الإخراج (عبر Tensor.asReadOnlyBuffer()).

public إبطال runSignature (مخرجات خريطة<سلسلة و Object> وخريطة<سلسلة و Object> مخرجات)

تشبه السمة runSignature(Map, Map, String) ولكنها لا تتطلّب تمرير مفتاح توقيع، بافتراض أنّ النموذج يحتوي على SignatureDef واحد. إذا كان النموذج يحتوي على أكثر من SignatureDef واحد، سيتم إنشاء استثناء.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المَعلمات
المدخلات
المخرجات

عامة إبطال runSignature (خريطة<سلسلة, كائن> المدخلات، خريطة<سلسلة، كائن>، مخرجات سلسلة مفتاح التوقيع)

يتم تشغيل استنتاج نموذج استنادًا إلى SignatureDef المقدَّم من خلال signatureKey.

اطّلِع على run(Object, Object) لمعرفة مزيد من التفاصيل حول أنواع بيانات الإدخال والمخرجات المسموح بها.

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المَعلمات
المدخلات تحديد من اسم الإدخال في SignatureDef إلى كائن إدخال.
المخرجات خريطة من اسم الإخراج في SignatureDef إلى بيانات الإخراج. قد يكون هذا الحقل فارغًا إذا أراد المتصل الاستعلام عن بيانات Tensor مباشرةً بعد الاستنتاج (مثلاً، إذا كان شكل الإخراج ديناميكيًا أو تم استخدام مؤشرات المخزن المؤقت للمخرجات).
signatureKey مفتاح التوقيع الذي يحدِّد SignatureDef.
الرميات
IllegalArgumentException إذا كانت السمة inputs فارغة أو فارغة، أو إذا كانت السمة outputs أو signatureKey فارغة، أو إذا حدث خطأ عند تنفيذ الاستنتاج.

متاح للجميع إبطال setCancelled (boolean cancelled)

متقدِّم: يقاطع الاستنتاج في منتصف المكالمة إلى run(Object, Object).

سيتم ضبط علامة الإلغاء على "صحيح" عند استدعاء هذه الدالة. سيتحقّق الترجمة الفورية من العلامة بين استدعاءات عمليات التشغيل، وإذا كانت هي true، سيتوقّف المترجم الفوري عن التنفيذ. ستظل خدمة الترجمة الفورية ملغية إلى أن يتم "إلغاء الإلغاء" صراحةً بحلول setCancelled(false).

تحذير: هذه واجهة برمجة تطبيقات تجريبية وقابلة للتغيير.

المَعلمات
تم الإلغاء. true لإلغاء الاستنتاج بأفضل جهد، وfalse للاستئناف.
الرميات
IllegalStateException في حال عدم إعداد ميزة "الترجمة الفورية" مع الخيار القابل للإلغاء، والذي يكون غير مفعّل تلقائيًا.