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 با 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 می سازد.
انتزاعی