Interpreter

حصة نهائية علنية الترجمة الفورية

فئة السائقين لتعزيز استنتاج النموذج باستخدام 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 فئة خيارات للتحكّم في سلوك ميزة "الترجمة الفورية" في بيئة التشغيل.

الشركات المصنّعة العامة

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

الطرق العامة

فراغ
allocateTensors()
يتم تعديل عمليات التخصيص صراحةً لجميع وحدات قياس الأداء، إذا لزم الأمر.
فراغ
إغلاق()
إصدار الموارد المرتبطة بالمثيل InterpreterApi
int
getInputIndex(سلسلة opName)
الحصول على فهرس للمدخل حسب اسم العملية للمدخل
Tensor
getInputTensor(int enterIndex)
يحصل على Tensor المرتبط بفهرس الإدخال المتوفر.
int
getInputTensorCount()
للحصول على عدد مترابطات الإدخال.
Tensor
getInputTensorFromSignature(سلسلة enterName، مفتاح توقيع سلسلة)
يحصل على Tensor المرتبط باسم الإدخال الخاص واسم طريقة التوقيع.
طويل
getLastNativeInferenceDurationNanoseconds()
تعرض توقيت الاستنتاج الأصلي.
int
getOutputIndex(سلسلة opName)
الحصول على فهرس للناتج وفقًا لاسم عملية المخرجات.
Tensor
getOutputTensor(int objectIndex)
يحصل على Tensor المرتبط بفهرس الإخراج المقدَّم.
int
getOutputTensorCount()
الحصول على عدد Tensors للمخرجات.
Tensor