الفئات الفرعية المعروفة غير المباشرة |
الواجهة إلى أداة الترجمة الفورية لنموذج 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 باستخدام النموذج والخيارات المحدّدة. |
تجريدي تدخُّل دفاعي | |
تجريدي Tensor |
getInputTensor(int enterIndex)
يحصل على Tensor المرتبط بفهرس الإدخال المتوفر.
|
تجريدي تدخُّل دفاعي |
getInputTensorCount()
للحصول على عدد مترابطات الإدخال.
|
تجريدي طويل |
getLastNativeInferenceDurationNanoseconds()
تعرض توقيت الاستنتاج الأصلي.
|
تجريدي تدخُّل دفاعي |