زیر کلاس های غیر مستقیم شناخته شده |
رابط به مفسر مدل 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 با Toco تعیین میشود، همانطور که شکلهای پیشفرض ورودیها هستند.
هنگامی که ورودی ها به صورت آرایه های (چند بعدی) ارائه می شوند، اندازه تانسور(های) ورودی مربوطه به طور ضمنی با توجه به شکل آن آرایه تغییر می کند. هنگامی که ورودی ها به عنوان انواع Buffer
ارائه می شوند، هیچ تغییر اندازه ضمنی انجام نمی شود. تماس گیرنده باید اطمینان حاصل کند که اندازه بایت Buffer
یا با تانسور مربوطه مطابقت دارد، یا اینکه ابتدا اندازه تانسور را از طریق resizeInput(int, int[])
تغییر می دهد. اطلاعات شکل و نوع تانسور را می توان از طریق کلاس Tensor
بدست آورد که از طریق getInputTensor(int)
و getOutputTensor(int)
در دسترس است.
اخطار: نمونه های InterpreterApi
ایمن نیستند .
اخطار: یک نمونه InterpreterApi
دارای منابعی است که باید به صراحت با فراخوانی close()
آزاد شوند.
کتابخانه TFLite بر اساس NDK API 19 ساخته شده است. ممکن است برای سطوح Android API زیر 19 کار کند، اما تضمینی نیست.
کلاس های تو در تو
کلاس | InterpreterApi.Options | یک کلاس گزینه برای کنترل رفتار مفسر زمان اجرا. |
روش های عمومی
خلأ انتزاعی | allocateTensors () در صورت لزوم، تخصیص ها را برای همه تانسورها به صراحت به روز می کند. |
خلأ انتزاعی | بستن () منابع مرتبط با نمونه InterpreterApi را منتشر کنید. |
Static InterpreterApi | ایجاد (گزینه های File modelFile، InterpreterApi.Options ) با استفاده از مدل و گزینه های مشخص شده، یک نمونه InterpreterApi می سازد. |
Static InterpreterApi | ایجاد (گزینه های ByteBuffer byteBuffer، InterpreterApi.Options ) با استفاده از مدل و گزینه های مشخص شده، یک نمونه InterpreterApi می سازد. |
انتزاعی |