Interpreter

مترجم کلاس نهایی عمومی

کلاس درایور برای استنتاج مدل با TensorFlow Lite.

توجه: اگر به هیچ یک از ویژگی‌های API "تجربی" زیر نیاز ندارید، ترجیح دهید به جای استفاده مستقیم از Interpreter از InterpreterApi و InterpreterFactory استفاده کنید.

یک 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 با Toco تعیین می‌شود، همانطور که شکل‌های پیش‌فرض ورودی‌ها هستند.

هنگامی که ورودی ها به صورت آرایه های (چند بعدی) ارائه می شوند، اندازه تانسور(های) ورودی مربوطه به طور ضمنی با توجه به شکل آن آرایه تغییر می کند. هنگامی که ورودی ها به عنوان انواع Buffer ارائه می شوند، هیچ تغییر اندازه ضمنی انجام نمی شود. تماس گیرنده باید اطمینان حاصل کند که اندازه بایت Buffer یا با تانسور مربوطه مطابقت دارد، یا اینکه ابتدا اندازه تانسور را از طریق resizeInput(int, int[]) تغییر می دهد. اطلاعات شکل و نوع تانسور را می توان از طریق کلاس Tensor بدست آورد که از طریق getInputTensor(int) و getOutputTensor(int) در دسترس است.

اخطار: نمونه های Interpreter نظر رشته ای ایمن نیستند . یک Interpreter دارای منابعی است که باید به صراحت با فراخوانی close() آزاد شوند.

کتابخانه TFLite بر اساس NDK API 19 ساخته شده است. ممکن است برای سطوح Android API زیر 19 کار کند، اما تضمینی نیست.

کلاس های تو در تو

کلاس مترجم.گزینه ها یک کلاس گزینه برای کنترل رفتار مفسر زمان اجرا.

سازندگان عمومی

مترجم ( فایل modelFile)
یک Interpreter را راه‌اندازی می‌کند.
مترجم ( گزینه های File modelFile، Interpreter.Options )
یک Interpreter راه‌اندازی می‌کند و گزینه‌هایی را برای سفارشی‌سازی رفتار مفسر مشخص می‌کند.
مترجم ( ByteBuffer byteBuffer)
یک Interpreter با ByteBuffer یک فایل مدل راه اندازی می کند.
مترجم ( ByteBuffer byteBuffer، گزینه های Interpreter.Options )
یک Interpreter با یک ByteBuffer از یک فایل مدل و مجموعه ای از Interpreter.Options سفارشی راه اندازی می کند.

روش های عمومی

خالی
allocateTensors ()
در صورت لزوم، تخصیص ها را برای همه تانسورها به صراحت به روز می کند.
خالی
بستن ()
منابع مرتبط با نمونه InterpreterApi را منتشر کنید.
بین المللی
getInputIndex ( رشته opName)
با توجه به نام عملیات ورودی، فهرست ورودی را دریافت می کند.
تانسور
getInputTensor (int inputIndex)
تانسور مرتبط با شاخص ورودی ارائه شده را دریافت می کند.
بین المللی
getInputTensorCount ()
تعداد تانسورهای ورودی را بدست می آورد.
تانسور
getInputTensorFromSignature (نام ورودی رشته ، کلید امضای رشته)
تانسور مرتبط با نام ورودی ارائه شده و نام روش امضا را دریافت می کند.
طولانی
getLastNativeInferenceDurationNanoseconds ()
زمان استنتاج بومی را برمی‌گرداند.
بین المللی
getOutputIndex ( رشته opame)
با توجه به نام عملیاتی خروجی، شاخص خروجی را دریافت می کند.
تانسور
getOutputTensor (int outputIndex)
تانسور مرتبط با شاخص خروجی ارائه شده را دریافت می کند.
بین المللی
getOutputTensorCount ()
تعداد تانسورهای خروجی را بدست می آورد.
تانسور
getOutputTensorFromSignature (نام خروجی رشته ، کلید امضای رشته)
تانسور مرتبط با نام خروجی ارائه شده را در روش امضای خاص دریافت می کند.
رشته[]
getSignatureInputs ( String signatureKey)
لیست ورودی های SignatureDefs را برای متد signatureKey دریافت می کند.
رشته[]
getSignatureKeys ()
فهرستی از نام‌های روش صادر شده SignatureDef موجود در مدل را دریافت می‌کند.
رشته[]
getSignatureOutputs ( String signatureKey)
لیستی از خروجی های SignatureDefs را برای متد signatureKey دریافت می کند.
خالی
resetVariableTensors ()
Advanced: همه تانسورهای متغیر را به مقدار پیش فرض بازنشانی می کند.
خالی
resizeInput (int idx، int[] dims، boolean strict)
اندازه ورودی idx-امین مدل بومی را به کمرنگ‌های داده شده تغییر می‌دهد.
خالی
resizeInput (int idx، int[] dims)
اندازه ورودی idx-امین مدل بومی را به کمرنگ‌های داده شده تغییر می‌دهد.
خالی
اجرا (ورودی شی ، خروجی شی )
استنتاج مدل را در صورتی اجرا می کند که مدل فقط یک ورودی بگیرد و تنها یک خروجی ارائه دهد.
خالی
runForMultipleInputsOutputs ( ورودی های شی[] ، نقشه < عدد صحیح ، شی > خروجی ها)
اگر مدل چندین ورودی دریافت کند یا خروجی های متعددی را برمی گرداند، استنتاج مدل را اجرا می کند.
خالی
runSignature ( Map < رشته ، شی > ورودی ها، نقشه < رشته ، شی > خروجی ها)
همانند runSignature(Map, Map, String) اما نیازی به ارسال signatureKey ندارد، با فرض اینکه مدل دارای یک SignatureDef باشد.
خالی
runSignature ( Map < String , Object > inputs , Map < String , Object > خروجی ها, String signatureKey )
استنتاج مدل را بر اساس SignatureDef ارائه شده از طریق signatureKey اجرا می کند.
خالی
setCancelled (بولی لغو شد)
پیشرفته: استنتاج را در میانه فراخوانی برای run(Object, Object) قطع می کند.

روش های ارثی

سازندگان عمومی

مترجم عمومی ( فایل modelFile)

یک Interpreter را راه‌اندازی می‌کند.

مولفه های
modelFile یک فایل از یک مدل TF Lite از پیش آموزش دیده.
پرتاب می کند
IllegalArgumentException اگر modelFile یک مدل معتبر TensorFlow Lite را کد نمی کند.

مترجم عمومی ( فایل modelFile، گزینه های Interpreter.Options )

یک Interpreter راه‌اندازی می‌کند و گزینه‌هایی را برای سفارشی‌سازی رفتار مفسر مشخص می‌کند.

مولفه های
modelFile یک فایل از مدل TF Lite از پیش آموزش دیده
گزینه ها مجموعه ای از گزینه ها برای سفارشی کردن رفتار مترجم
پرتاب می کند
IllegalArgumentException اگر modelFile یک مدل معتبر TensorFlow Lite را کد نمی کند.

مترجم عمومی ( ByteBuffer byteBuffer)

یک Interpreter با ByteBuffer یک فایل مدل راه اندازی می کند.

ByteBuffer نباید پس از ساخت یک Interpreter اصلاح شود. ByteBuffer می تواند یک MappedByteBuffer باشد که حافظه یک فایل مدل را نقشه برداری می کند، یا یک ByteBuffer مستقیم از NativeOrder() که حاوی محتوای بایت های یک مدل است.

مولفه های
بایت بافر
پرتاب می کند
IllegalArgumentException اگر byteBuffer یک MappedByteBuffer یا یک ByteBuffer مستقیم از nativeOrder نباشد.

مترجم عمومی ( ByteBuffer byteBuffer، گزینه های Interpreter.Options )

یک Interpreter با یک ByteBuffer از یک فایل مدل و مجموعه ای از Interpreter.Options سفارشی راه اندازی می کند.

ByteBuffer نباید پس از ساخت یک Interpreter اصلاح شود. ByteBuffer می تواند یک MappedByteBuffer باشد که حافظه یک فایل مدل را نقشه برداری می کند، یا یک ByteBuffer مستقیم از NativeOrder() که حاوی محتوای بایت های یک مدل است.

مولفه های
بایت بافر
گزینه ها
پرتاب می کند
IllegalArgumentException اگر byteBuffer یک MappedByteBuffer یا یک ByteBuffer مستقیم از nativeOrder نباشد.

روش های عمومی

public void allocateTensors ()

در صورت لزوم، تخصیص ها را برای همه تانسورها به صراحت به روز می کند.

این اشکال و تخصیص حافظه را برای تانسورهای وابسته با استفاده از شکل(های) تانسور ورودی همانطور که داده شد منتشر می کند.

توجه: این تماس *صرفا اختیاری* است. اگر اندازه هر یک از تانسورهای ورودی تغییر کرده باشد، تخصیص تانسور به طور خودکار در طول اجرا اتفاق می‌افتد. این فراخوانی در تعیین اشکال برای هر تانسور خروجی قبل از اجرای نمودار بسیار مفید است، به عنوان مثال،

 interpreter.resizeInput(0, new int[]{1, 4, 4, 3}));
 interpreter.allocateTensors();
 FloatBuffer input = FloatBuffer.allocate(interpreter.getInputTensor(0).numElements());
 // Populate inputs...
 FloatBuffer output = FloatBuffer.allocate(interpreter.getOutputTensor(0).numElements());
 interpreter.run(input, output)
 // Process outputs...

توجه: برخی از نمودارها خروجی هایی با شکل پویا دارند، در این صورت ممکن است شکل خروجی تا زمانی که استنتاج اجرا نشود، به طور کامل منتشر نشود.

بسته شدن فضای خالی عمومی ()

منابع مرتبط با نمونه InterpreterApi را منتشر کنید.

public int getInputIndex ( رشته opName)

با توجه به نام عملیات ورودی، فهرست ورودی را دریافت می کند.

مولفه های
opName

تانسور عمومی getInputTensor (int inputIndex)

تانسور مرتبط با شاخص ورودی ارائه شده را دریافت می کند.

مولفه های
InputIndex

عمومی int getInputTensorCount ()

تعداد تانسورهای ورودی را بدست می آورد.

تانسور عمومی getInputTensorFromSignature (نام ورودی رشته ، کلید امضای رشته )

تانسور مرتبط با نام ورودی ارائه شده و نام روش امضا را دریافت می کند.

هشدار: این یک API آزمایشی است و ممکن است تغییر کند.

مولفه های
نام ورودی نام را در امضا وارد کنید
کلید امضا اگر مدل دارای یک امضا باشد، کلید امضا که SignatureDef را شناسایی می کند، می تواند تهی باشد.
پرتاب می کند
IllegalArgumentException اگر inputName یا signatureKey خالی یا خالی باشد، یا نام نامعتبر ارائه شود.

عمومی Long getLastNativeInferenceDurationNanoseconds ()

زمان استنتاج بومی را برمی‌گرداند.

public int getOutputIndex ( رشته opName)

با توجه به نام عملیاتی خروجی، شاخص خروجی را دریافت می کند.

مولفه های
opName

تانسور عمومی getOutputTensor (int outputIndex)

تانسور مرتبط با شاخص خروجی ارائه شده را دریافت می کند.

توجه: جزئیات تانسور خروجی (به عنوان مثال، شکل) ممکن است تا پس از اجرای استنتاج به طور کامل پر نشوند. اگر *قبل از* اجرای استنتاج به جزئیات به روز نیاز دارید (به عنوان مثال، پس از تغییر اندازه یک تانسور ورودی، که ممکن است اشکال تانسور خروجی را باطل کند)، از allocateTensors() استفاده کنید تا به صراحت تخصیص و انتشار شکل را فعال کنید. توجه داشته باشید که برای نمودارهایی با اشکال خروجی که وابسته به *مقدارهای* ورودی هستند، شکل خروجی ممکن است تا زمان استنتاج به طور کامل مشخص نشود.

مولفه های
OutputIndex

عمومی int getOutputTensorCount ()

تعداد تانسورهای خروجی را بدست می آورد.

تانسور عمومی getOutputTensorFromSignature (نام خروجی رشته ، کلید امضای رشته)

تانسور مرتبط با نام خروجی ارائه شده را در روش امضای خاص دریافت می کند.

توجه: جزئیات تانسور خروجی (به عنوان مثال، شکل) ممکن است تا پس از اجرای استنتاج به طور کامل پر نشوند. اگر *قبل از* اجرای استنتاج به جزئیات به روز نیاز دارید (به عنوان مثال، پس از تغییر اندازه یک تانسور ورودی، که ممکن است اشکال تانسور خروجی را باطل کند)، از allocateTensors() استفاده کنید تا به صراحت تخصیص و انتشار شکل را فعال کنید. توجه داشته باشید که برای نمودارهایی با اشکال خروجی که وابسته به *مقدارهای* ورودی هستند، شکل خروجی ممکن است تا زمان استنتاج به طور کامل مشخص نشود.

هشدار: این یک API آزمایشی است و ممکن است تغییر کند.

مولفه های
outputName نام خروجی در امضا
کلید امضا اگر مدل دارای یک امضا باشد، کلید امضا که SignatureDef را شناسایی می کند، می تواند تهی باشد.
پرتاب می کند
IllegalArgumentException اگر outputName یا signatureKey خالی یا خالی باشد، یا نام نامعتبر ارائه شود.

رشته عمومی[] getSignatureInputs ( String signatureKey)

لیست ورودی های SignatureDefs را برای متد signatureKey دریافت می کند.

هشدار: این یک API آزمایشی است و ممکن است تغییر کند.

مولفه های
کلید امضا

رشته عمومی[] getSignatureKeys ()

فهرستی از نام‌های روش صادر شده SignatureDef موجود در مدل را دریافت می‌کند.

هشدار: این یک API آزمایشی است و ممکن است تغییر کند.

رشته عمومی[] getSignatureOutputs ( String signatureKey)

لیستی از خروجی های SignatureDefs را برای متد signatureKey دریافت می کند.

هشدار: این یک API آزمایشی است و ممکن است تغییر کند.

مولفه های
کلید امضا

public void resetVariableTensors ()

Advanced: همه تانسورهای متغیر را به مقدار پیش فرض بازنشانی می کند.

اگر تانسور متغیر دارای بافر مرتبط نباشد، به صفر بازنشانی می‌شود.

هشدار: این یک API آزمایشی است و ممکن است تغییر کند.

public void resizeInput (int idx, int[] dims, boolean strict)

اندازه ورودی idx-امین مدل بومی را به کمرنگ‌های داده شده تغییر می‌دهد.

وقتی «سخت» True باشد، فقط ابعاد ناشناخته را می توان تغییر اندازه داد. ابعاد ناشناخته به عنوان "-1" در آرایه ای که توسط "Tensor.shapeSignature()" برگردانده شده است نشان داده می شود.

مولفه های
idx
کم نور می کند
سخت گیرانه

public void resizeInput (int idx, int[] dims)

اندازه ورودی idx-امین مدل بومی را به کمرنگ‌های داده شده تغییر می‌دهد.

مولفه های
idx
کم نور می کند

اجرای خالی عمومی (ورودی شی ، خروجی شی )

استنتاج مدل را در صورتی اجرا می کند که مدل فقط یک ورودی بگیرد و تنها یک خروجی ارائه دهد.

هشدار: اگر یک Buffer (ترجیحاً مستقیم، اما لازم نیست) به عنوان نوع داده ورودی/خروجی استفاده شود، API کارآمدتر است. لطفاً از Buffer برای تغذیه و واکشی داده های اولیه برای عملکرد بهتر استفاده کنید. انواع Buffer بتن زیر پشتیبانی می شود:

  • ByteBuffer - سازگار با هر نوع Tensor ابتدایی زیرین.
  • FloatBuffer - سازگار با تانسورهای شناور.
  • IntBuffer - سازگار با تانسورهای int32.
  • LongBuffer - سازگار با تانسورهای int64.
توجه داشته باشید که انواع بولی فقط به عنوان آرایه پشتیبانی می شوند، نه Buffer یا به عنوان ورودی های اسکالر.

مولفه های
ورودی یک آرایه یا آرایه چند بعدی یا یک Buffer از انواع ابتدایی شامل int، float، long و byte. Buffer روش ترجیحی برای ارسال داده های ورودی بزرگ برای انواع اولیه است، در حالی که انواع رشته ها نیاز به استفاده از مسیر ورودی آرایه (چند بعدی) دارند. هنگامی که یک Buffer استفاده می شود، محتوای آن باید تا زمانی که استنتاج مدل انجام نشود، بدون تغییر باقی بماند و تماس گیرنده باید اطمینان حاصل کند که Buffer در موقعیت خواندن مناسب است. یک مقدار null فقط در صورتی مجاز است که تماس گیرنده از یک Delegate استفاده کند که اجازه تعامل با کنترل بافر را می دهد و چنین بافری به Tensor ورودی متصل شده باشد.
خروجی یک آرایه چند بعدی از داده های خروجی، یا یک Buffer از انواع ابتدایی شامل int، float، long و byte. هنگامی که از Buffer استفاده می شود، تماس گیرنده باید مطمئن شود که موقعیت نوشتن مناسب را تنظیم کرده است. یک مقدار تهی مجاز است و برای موارد خاصی مفید است، به عنوان مثال، اگر تماس‌گیرنده از یک Delegate استفاده می‌کند که اجازه تعامل با بافر را می‌دهد، و چنین بافری به Tensor خروجی متصل شده است (همچنین رجوع کنید به Interpreter.Options#setAllowBufferHandleOutput(boolean) )، یا اگر نمودار خروجی هایی به شکل پویا داشته باشد و تماس گیرنده باید شکل Tensor خروجی را پس از فراخوانی استنتاج جستجو کند و داده ها را مستقیماً از تانسور خروجی واکشی کند (از طریق Tensor.asReadOnlyBuffer() ).

public void runForMultipleInputsOutputs ( ورودی های Object[] ، Map < Integer ، Object > خروجی ها)

اگر مدل چندین ورودی دریافت کند یا خروجی های متعددی را برمی گرداند، استنتاج مدل را اجرا می کند.

هشدار: اگر Buffer (ترجیحاً مستقیم، اما لازم نیست) به عنوان انواع داده های ورودی/خروجی استفاده شود، API کارآمدتر است. لطفاً از Buffer برای تغذیه و واکشی داده های اولیه برای عملکرد بهتر استفاده کنید. انواع Buffer بتن زیر پشتیبانی می شود:

  • ByteBuffer - سازگار با هر نوع Tensor ابتدایی زیرین.
  • FloatBuffer - سازگار با تانسورهای شناور.
  • IntBuffer - سازگار با تانسورهای int32.
  • LongBuffer - سازگار با تانسورهای int64.
توجه داشته باشید که انواع بولی فقط به عنوان آرایه پشتیبانی می شوند، نه Buffer یا به عنوان ورودی های اسکالر.

توجه: مقادیر null برای عناصر منفرد inputs و outputs تنها در صورتی مجاز است که تماس گیرنده از یک Delegate استفاده کند که اجازه تعامل با دسته بافر را می دهد و چنین بافری به Tensor (های) ورودی یا خروجی مربوطه متصل شده باشد.

مولفه های
ورودی ها آرایه ای از داده های ورودی ورودی ها باید به ترتیب ورودی های مدل باشند. هر ورودی می تواند یک آرایه یا آرایه چند بعدی یا یک Buffer از انواع اولیه از جمله int، float، long و byte باشد. Buffer روش ترجیحی برای ارسال داده های ورودی بزرگ است، در حالی که انواع رشته ها نیاز به استفاده از مسیر ورودی آرایه (چند بعدی) دارند. هنگامی که Buffer استفاده می شود، محتوای آن باید تا زمانی که استنتاج مدل انجام شود، بدون تغییر باقی بماند و تماس گیرنده باید اطمینان حاصل کند که Buffer در موقعیت خواندن مناسب است.
خروجی ها نقشه‌ای که شاخص‌های خروجی را به آرایه‌های چند بعدی داده‌های خروجی یا Buffer از انواع ابتدایی شامل int، float، long و byte نگاشت می‌کند. برای استفاده از خروجی ها فقط باید ورودی ها را حفظ کند. هنگامی که از Buffer استفاده می شود، تماس گیرنده باید مطمئن شود که موقعیت نوشتن مناسب را تنظیم کرده است. نقشه ممکن است برای مواردی که از دسته‌های بافر برای داده‌های تانسور خروجی استفاده می‌شود، یا مواردی که خروجی‌ها به صورت پویا شکل می‌گیرند و تماس‌گیرنده باید شکل Tensor خروجی را پس از فراخوانی استنتاج جستجو کند، و داده‌ها را مستقیماً از تانسور خروجی واکشی کند، خالی باشد. از طریق Tensor.asReadOnlyBuffer() ).

عمومی void runSignature ( Map < رشته ، شی > ورودی ها، نقشه < رشته ، شی > خروجی ها)

همانند runSignature(Map, Map, String) اما نیازی به ارسال signatureKey ندارد، با فرض اینکه مدل دارای یک SignatureDef باشد. اگر مدل بیش از یک SignatureDef داشته باشد یک استثنا ایجاد می کند.

هشدار: این یک API آزمایشی است و ممکن است تغییر کند.

مولفه های
ورودی ها
خروجی ها

عمومی void runSignature ( Map < رشته ، شی > ورودی ها، نقشه < رشته ، شی > خروجی ها، رشته امضا کلید)

استنتاج مدل را بر اساس SignatureDef ارائه شده از طریق signatureKey اجرا می کند.

برای جزئیات بیشتر در مورد انواع داده های ورودی و خروجی مجاز به run(Object, Object) مراجعه کنید.

هشدار: این یک API آزمایشی است و ممکن است تغییر کند.

مولفه های
ورودی ها نقشه ای از نام ورودی در SignatureDef به یک شی ورودی.
خروجی ها نقشه ای از نام خروجی در SignatureDef برای خروجی داده ها. اگر تماس گیرنده بخواهد مستقیماً پس از استنتاج از داده های Tensor پرس و جو کند، ممکن است خالی باشد (مثلاً اگر شکل خروجی پویا باشد یا از دسته های بافر خروجی استفاده شود).
کلید امضا کلید امضا برای شناسایی SignatureDef.
پرتاب می کند
IllegalArgumentException اگر inputs تهی یا خالی هستند، اگر outputs یا signatureKey تهی باشد، یا اگر هنگام اجرای استنتاج خطایی رخ دهد.

مجموعه خالی عمومی لغو شد (بولی لغو شد)

پیشرفته: استنتاج را در میانه فراخوانی برای run(Object, Object) قطع می کند.

با فراخوانی این تابع، یک پرچم لغو روی true تنظیم می شود. مفسر پرچم بین فراخوان‌های Op را بررسی می‌کند و اگر true باشد، مفسر اجرا را متوقف می‌کند. مفسر تا زمانی که به صراحت توسط setCancelled(false) "لغو نشده" شود، در حالت لغو باقی می ماند.

هشدار: این یک API آزمایشی است و ممکن است تغییر کند.

مولفه های
لغو شد true برای لغو استنتاج به بهترین روش. false برای از سرگیری.
پرتاب می کند
IllegalStateException اگر مفسر با گزینه cancellable که به طور پیش فرض خاموش است مقداردهی اولیه نشده باشد.