فئة السائقين لتعزيز استنتاج النموذج باستخدام 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 |