InterpreterApi

واجهة متاحة للجميع InterpreterApi
الفئات الفرعية المعروفة غير المباشرة

الواجهة إلى أداة الترجمة الفورية لنموذج TensorFlow Lite، باستثناء الطرق التجريبية.

يتضمّن المثيل InterpreterApi نموذج TensorFlow Lite المدرَّب مسبقًا، يتم تنفيذها لاستنتاج النموذج.

على سبيل المثال، إذا كان النموذج يستخدم إدخالاً واحدًا فقط ويعرض ناتجًا واحدًا فقط:

try (InterpreterApi interpreter =
     new InterpreterApi.create(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 (InterpreterApi interpreter =
     new InterpreterApi.create(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 (InterpreterApi interpreter =
     new InterpreterApi.create(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).

تحذير: مثيلات InterpreterApi غير آمنة لسلاسل المحادثات.

تحذير: يمتلك المثيل InterpreterApi موارد يجب أن تكون تم تحريره صراحةً من خلال استدعاء close()

تم إنشاء مكتبة TFLite وفقًا للإصدار 19 من واجهة برمجة التطبيقات NDK API. ويمكن أن يعمل مع مستويات واجهات برمجة تطبيقات Android الأقدم من 19. لكنه ليس مضمونًا.

الفصول الدراسية المتداخلة

صنف InterpreterApi.Options فئة خيارات للتحكّم في سلوك ميزة "الترجمة الفورية" في بيئة التشغيل.

الطرق العامة

تجريدي فراغ
allocateTensors()
يتم تعديل عمليات التخصيص صراحةً لجميع وحدات قياس الأداء، إذا لزم الأمر.
تجريدي فراغ
إغلاق()
إصدار الموارد المرتبطة بالمثيل InterpreterApi
ثابتة InterpreterApi
create(خيارا File modelFile، InterpreterApi.Options)
تنشئ هذه الدالة مثيل InterpreterApi باستخدام النموذج والخيارات المحدّدة.
ثابتة InterpreterApi
create(خيارات ByteBuffer byteBuffer، خيارات InterpreterApi.Options)
تنشئ هذه الدالة مثيل InterpreterApi باستخدام النموذج والخيارات المحدّدة.
تجريدي تدخُّل دفاعي
getInputIndex(سلسلة opName)
الحصول على فهرس للمدخل حسب اسم العملية للمدخل
تجريدي Tensor
getInputTensor(int enterIndex)
يحصل على Tensor المرتبط بفهرس الإدخال المتوفر.
تجريدي تدخُّل دفاعي
getInputTensorCount()
للحصول على عدد مترابطات الإدخال.
تجريدي طويل
getLastNativeInferenceDurationNanoseconds()
تعرض توقيت الاستنتاج الأصلي.
تجريدي تدخُّل دفاعي