পরিচিত পরোক্ষ উপশ্রেণী |
টেনসরফ্লো লাইট মডেল ইন্টারপ্রেটারে ইন্টারফেস, পরীক্ষামূলক পদ্ধতি বাদ দিয়ে।
একটি InterpreterApi
উদাহরণ একটি প্রাক-প্রশিক্ষিত টেনসরফ্লো লাইট মডেলকে এনক্যাপসুলেট করে, যেখানে মডেল অনুমানের জন্য অপারেশনগুলি চালানো হয়।
উদাহরণস্বরূপ, যদি একটি মডেল শুধুমাত্র একটি ইনপুট নেয় এবং শুধুমাত্র একটি আউটপুট প্রদান করে:
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);
}
ইনপুটগুলির ডিফল্ট আকারের মতো Toco-এর সাথে TensorFlow মডেলকে TensorFlowLite মডেলে রূপান্তর করার সময় ইনপুট এবং আউটপুটগুলির অর্ডার নির্ধারিত হয়।
যখন ইনপুটগুলি (মাল্টি-ডাইমেনশনাল) অ্যারে হিসাবে প্রদান করা হয়, তখন সংশ্লিষ্ট ইনপুট টেনসর(গুলি) সেই অ্যারের আকৃতি অনুসারে পরোক্ষভাবে আকার পরিবর্তন করা হবে। যখন ইনপুটগুলি Buffer
প্রকার হিসাবে প্রদান করা হয়, কোন অন্তর্নিহিত আকার পরিবর্তন করা হয় না; কলকারীকে অবশ্যই নিশ্চিত করতে হবে যে Buffer
বাইটের আকার হয় সংশ্লিষ্ট টেনসরের সাথে মিলে যায়, অথবা তারা প্রথমে resizeInput(int, int[])
এর মাধ্যমে টেনসরের আকার পরিবর্তন করে। টেনসরের আকার এবং প্রকারের তথ্য Tensor
ক্লাসের মাধ্যমে প্রাপ্ত করা যেতে পারে, getInputTensor(int)
এবং getOutputTensor(int)
এর মাধ্যমে উপলব্ধ।
সতর্কতা: InterpreterApi
দৃষ্টান্ত থ্রেড-নিরাপদ নয় ।
সতর্কতা: একটি InterpreterApi
ইনস্ট্যান্সের মালিকানাধীন সম্পদ যা অবশ্যই close()
আহ্বান করে স্পষ্টভাবে মুক্ত করতে হবে
TFLite লাইব্রেরি NDK API 19 এর বিপরীতে তৈরি করা হয়েছে। এটি 19-এর নিচে Android API স্তরের জন্য কাজ করতে পারে, কিন্তু নিশ্চিত নয়।
নেস্টেড ক্লাস
ক্লাস | InterpreterApi.Options | রানটাইম ইন্টারপ্রেটার আচরণ নিয়ন্ত্রণ করার জন্য একটি বিকল্প ক্লাস। |
পাবলিক পদ্ধতি
বিমূর্ত শূন্যতা | বরাদ্দ টেনসর () প্রয়োজনে সমস্ত টেনসরের জন্য বরাদ্দ স্পষ্টভাবে আপডেট করে। |
বিমূর্ত শূন্যতা | বন্ধ () InterpreterApi দৃষ্টান্তের সাথে সম্পর্কিত সংস্থানগুলি প্রকাশ করুন। |
স্ট্যাটিক ইন্টারপ্রেটারএপিআই | তৈরি করুন ( ফাইল মডেল ফাইল, ইন্টারপ্রেটারএপিআই . বিকল্প বিকল্প) নির্দিষ্ট মডেল এবং বিকল্পগুলি ব্যবহার করে একটি InterpreterApi উদাহরণ তৈরি করে। |
স্ট্যাটিক ইন্টারপ্রেটারএপিআই | তৈরি করুন ( ByteBuffer byteBuffer, InterpreterApi.Options বিকল্প) নির্দিষ্ট মডেল এবং বিকল্পগুলি ব্যবহার করে একটি InterpreterApi উদাহরণ তৈরি করে। |
বিমূর্ত int | |
বিমূর্ত টেনসর | getInputTensor (int inputIndex) প্রদত্ত ইনপুট সূচকের সাথে যুক্ত টেনসর পায়। |
বিমূর্ত int | getInputTensorCount () ইনপুট টেনসর সংখ্যা পায়। |
বিমূর্ত দীর্ঘ | GetLastNativeInferenceDurationNanoseconds () নেটিভ ইনফারেন্স টাইমিং প্রদান করে। |
বিমূর্ত int | |
বিমূর্ত টেনসর | getOutputTensor (int outputIndex) প্রদত্ত আউটপুট সূচকের সাথে যুক্ত টেনসর পায়। |
বিমূর্ত int | getOutputTensorCount () আউটপুট টেনসরের সংখ্যা পায়। |
বিমূর্ত শূন্যতা | resizeInput (int idx, int[] dims, বুলিয়ান কঠোর) প্রদত্ত ডিমে নেটিভ মডেলের idx-th ইনপুটকে পুনরায় আকার দেয়। |
বিমূর্ত শূন্যতা | resizeInput (int idx, int[] dims) প্রদত্ত ডিমে নেটিভ মডেলের idx-th ইনপুটকে পুনরায় আকার দেয়। |
বিমূর্ত শূন্যতা | |
বিমূর্ত শূন্যতা | runForMultipleInputsOutputs ( অবজেক্ট [] ইনপুট, মানচিত্র < পূর্ণসংখ্যা , অবজেক্ট > আউটপুট) মডেল অনুমান চালায় যদি মডেল একাধিক ইনপুট নেয়, বা একাধিক আউটপুট প্রদান করে। |
উত্তরাধিকারসূত্রে প্রাপ্ত পদ্ধতি
পাবলিক পদ্ধতি
পাবলিক বিমূর্ত অকার্যকর বরাদ্দ টেনসর ()
প্রয়োজনে সমস্ত টেনসরের জন্য বরাদ্দ স্পষ্টভাবে আপডেট করে।
এটি প্রদত্ত ইনপুট টেনসর আকার(গুলি) ব্যবহার করে নির্ভরশীল টেনসরগুলির জন্য আকার এবং মেমরি বরাদ্দ প্রচার করবে।
দ্রষ্টব্য: এই কলটি *বিশুদ্ধরূপে ঐচ্ছিক*। কোনো ইনপুট টেনসরের আকার পরিবর্তন করা হলে টেনসর বরাদ্দ স্বয়ংক্রিয়ভাবে কার্যকর করার সময় ঘটবে। এই কলটি গ্রাফটি চালানোর আগে যেকোন আউটপুট টেনসরের আকার নির্ধারণ করতে সবচেয়ে কার্যকর, যেমন,
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
দৃষ্টান্তের সাথে সম্পর্কিত সংস্থানগুলি প্রকাশ করুন।
পাবলিক স্ট্যাটিক ইন্টারপ্রেটারএপি তৈরি করুন ( ফাইল মডেলফাইল, ইন্টারপ্রেটারএপিআই । বিকল্পগুলি)
নির্দিষ্ট মডেল এবং বিকল্পগুলি ব্যবহার করে একটি InterpreterApi
উদাহরণ তৈরি করে। মডেল একটি ফাইল থেকে লোড করা হবে.
পরামিতি
মডেল ফাইল | একটি প্রাক-প্রশিক্ষিত TF লাইট মডেল ধারণকারী একটি ফাইল। |
---|---|
বিকল্প | দোভাষীর আচরণ কাস্টমাইজ করার জন্য বিকল্পগুলির একটি সেট। |
নিক্ষেপ করে
অবৈধ আর্গুমেন্ট ব্যতিক্রম | যদি modelFile একটি বৈধ টেনসরফ্লো লাইট মডেল এনকোড না করে। |
---|
পাবলিক স্ট্যাটিক ইন্টারপ্রেটারএপি তৈরি করুন ( বাইটবাফার বাইটবাফার, ইন্টারপ্রেটারএপি . বিকল্প বিকল্প)
নির্দিষ্ট মডেল এবং বিকল্পগুলি ব্যবহার করে একটি InterpreterApi
উদাহরণ তৈরি করে। মডেলটি একটি ByteBuffer
থেকে পড়া হবে।
পরামিতি
বাইটবাফার | একটি প্রাক-প্রশিক্ষিত TF লাইট মডেল, বাইনারি ক্রমিক আকারে। InterpreterApi উদাহরণ তৈরি করার পরে ByteBuffer সংশোধন করা উচিত নয়। ByteBuffer হয় একটি MappedByteBuffer হতে পারে যা একটি মডেল ফাইলকে মেমরি-ম্যাপ করে, অথবা নেটিভঅর্ডার() এর একটি সরাসরি ByteBuffer যা একটি মডেলের বাইট সামগ্রী ধারণ করে। |
---|---|
বিকল্প | দোভাষীর আচরণ কাস্টমাইজ করার জন্য বিকল্পগুলির একটি সেট। |
নিক্ষেপ করে
অবৈধ আর্গুমেন্ট ব্যতিক্রম | যদি byteBuffer একটি MappedByteBuffer বা নেটিভঅর্ডারের সরাসরি ByteBuffer না হয়। |
---|
পাবলিক বিমূর্ত int getInputIndex ( স্ট্রিং opName)
ইনপুটের অপের নাম দেওয়া একটি ইনপুটের সূচক পায়।
পরামিতি
opName |
---|
নিক্ষেপ করে
অবৈধ আর্গুমেন্ট ব্যতিক্রম | যদি opName দোভাষী আরম্ভ করার জন্য ব্যবহৃত মডেলের কোনো ইনপুটের সাথে মেলে না। |
---|
সর্বজনীন বিমূর্ত টেনসর getInputTensor (int inputIndex)
প্রদত্ত ইনপুট সূচকের সাথে যুক্ত টেনসর পায়।
পরামিতি
inputIndex |
---|
নিক্ষেপ করে
অবৈধ আর্গুমেন্ট ব্যতিক্রম | যদি inputIndex নেতিবাচক হয় বা মডেল ইনপুট সংখ্যার চেয়ে ছোট না হয়। |
---|
সর্বজনীন বিমূর্ত int getInputTensorCount ()
ইনপুট টেনসর সংখ্যা পায়।
সর্বজনীন বিমূর্ত দীর্ঘ getLastNativeInferenceDurationNanoseconds ()
নেটিভ ইনফারেন্স টাইমিং প্রদান করে।
নিক্ষেপ করে
অবৈধ আর্গুমেন্ট ব্যতিক্রম | যদি মডেলটি দোভাষী দ্বারা আরম্ভ না করা হয়। |
---|
পাবলিক বিমূর্ত int getOutputIndex ( স্ট্রিং opName)
আউটপুটের op নাম দেওয়া একটি আউটপুটের সূচক পায়।
পরামিতি
opName |
---|
নিক্ষেপ করে
অবৈধ আর্গুমেন্ট ব্যতিক্রম | যদি opName দোভাষী আরম্ভ করার জন্য ব্যবহৃত মডেলের কোনো আউটপুটের সাথে মেলে না। |
---|
সর্বজনীন বিমূর্ত টেনসর getOutputTensor (int outputIndex)
প্রদত্ত আউটপুট সূচকের সাথে যুক্ত টেনসর পায়।
দ্রষ্টব্য: আউটপুট টেনসরের বিশদ বিবরণ (যেমন, আকৃতি) সম্পূর্ণরূপে জনবহুল নাও হতে পারে যতক্ষণ না অনুমান কার্যকর করা হয়। আপনার যদি অনুমান চালানোর *আগে* আপডেট করা বিবরণের প্রয়োজন হয় (যেমন, একটি ইনপুট টেনসরের আকার পরিবর্তন করার পরে, যা আউটপুট টেনসরের আকারগুলিকে বাতিল করতে পারে), স্পষ্টভাবে বরাদ্দ এবং আকৃতি প্রচার ট্রিগার করতে allocateTensors()
ব্যবহার করুন। উল্লেখ্য, ইনপুট *মান* এর উপর নির্ভরশীল আউটপুট আকৃতি সহ গ্রাফগুলির জন্য, অনুমান চালানো না হওয়া পর্যন্ত আউটপুট আকৃতি সম্পূর্ণরূপে নির্ধারিত নাও হতে পারে।
পরামিতি
আউটপুট ইনডেক্স |
---|
নিক্ষেপ করে
অবৈধ আর্গুমেন্ট ব্যতিক্রম | যদি outputIndex নেতিবাচক হয় বা মডেল আউটপুট সংখ্যার চেয়ে ছোট না হয়। |
---|
পাবলিক বিমূর্ত int getOutputTensorCount ()
আউটপুট টেনসরের সংখ্যা পায়।
সর্বজনীন বিমূর্ত অকার্যকর রিসাইজইনপুট (int idx, int[] dims, বুলিয়ান কঠোর)
প্রদত্ত ডিমে নেটিভ মডেলের idx-th ইনপুটকে পুনরায় আকার দেয়।
যখন 'কঠোর' সত্য হয়, শুধুমাত্র অজানা মাত্রাগুলিকে পুনরায় আকার দেওয়া যেতে পারে৷ অজানা মাত্রাগুলি `Tensor.shapeSignature()` দ্বারা প্রত্যাবর্তিত অ্যারেতে `-1` হিসাবে নির্দেশিত হয়৷
পরামিতি
idx | |
---|---|
অনুজ্জ্বল | |
কঠোর |
নিক্ষেপ করে
অবৈধ আর্গুমেন্ট ব্যতিক্রম | যদি idx নেতিবাচক হয় বা মডেল ইনপুট সংখ্যার চেয়ে ছোট না হয়; অথবা যদি idx-th ইনপুটের আকার পরিবর্তন করার সময় ত্রুটি ঘটে। উপরন্তু, স্থির মাত্রা সহ একটি টেনসরের আকার পরিবর্তন করার চেষ্টা করার সময় ত্রুটি ঘটে যখন `কঠোর` সত্য হয়। |
---|
সর্বজনীন বিমূর্ত ভয়েড রিসাইজইনপুট (int idx, int[] dims)
প্রদত্ত ডিমে নেটিভ মডেলের idx-th ইনপুটকে পুনরায় আকার দেয়।
পরামিতি
idx | |
---|---|
অনুজ্জ্বল |
নিক্ষেপ করে
অবৈধ আর্গুমেন্ট ব্যতিক্রম | যদি idx নেতিবাচক হয় বা মডেল ইনপুট সংখ্যার চেয়ে ছোট না হয়; অথবা যদি idx-th ইনপুটের আকার পরিবর্তন করার সময় ত্রুটি ঘটে। |
---|
সর্বজনীন বিমূর্ত অকার্যকর রান ( অবজেক্ট ইনপুট, অবজেক্ট আউটপুট)
মডেল অনুমান চালায় যদি মডেল শুধুমাত্র একটি ইনপুট নেয়, এবং শুধুমাত্র একটি আউটপুট প্রদান করে।
সতর্কতা: এপিআই আরও দক্ষ হয় যদি ইনপুট/আউটপুট ডেটা টাইপ হিসাবে একটি Buffer
(প্রত্যক্ষভাবে সরাসরি, কিন্তু প্রয়োজন হয় না) ব্যবহার করা হয়। অনুগ্রহ করে ভাল পারফরম্যান্সের জন্য আদিম ডেটা ফিড করতে Buffer
ব্যবহার করার কথা বিবেচনা করুন। নিম্নলিখিত কংক্রিট Buffer
প্রকারগুলি সমর্থিত:
-
ByteBuffer
- যে কোন অন্তর্নিহিত আদিম টেনসর প্রকারের সাথে সামঞ্জস্যপূর্ণ। -
FloatBuffer
- ফ্লোট টেনসরের সাথে সামঞ্জস্যপূর্ণ। -
IntBuffer
- int32 টেনসরের সাথে সামঞ্জস্যপূর্ণ। -
LongBuffer
- int64 টেনসরের সাথে সামঞ্জস্যপূর্ণ।
Buffer
s নয় বা স্কেলার ইনপুট হিসাবে। পরামিতি
ইনপুট | একটি অ্যারে বা বহুমাত্রিক অ্যারে, বা int, float, long, এবং byte সহ আদিম ধরনের একটি Buffer । Buffer হল আদিম প্রকারের জন্য বড় ইনপুট ডেটা পাস করার পছন্দের উপায়, যেখানে স্ট্রিং প্রকারের জন্য (মাল্টি-ডাইমেনশনাল) অ্যারে ইনপুট পাথ ব্যবহার করা প্রয়োজন। যখন একটি Buffer ব্যবহার করা হয়, মডেল অনুমান করা না হওয়া পর্যন্ত এর বিষয়বস্তু অপরিবর্তিত থাকা উচিত, এবং কলকারীকে অবশ্যই নিশ্চিত করতে হবে যে Buffer উপযুক্ত পঠন অবস্থানে রয়েছে। একটি null মান অনুমোদিত হয় শুধুমাত্র যদি কলকারী একটি Delegate ব্যবহার করে যা বাফার হ্যান্ডেল ইন্টারপকে অনুমতি দেয় এবং এই ধরনের একটি বাফার ইনপুট Tensor সাথে আবদ্ধ থাকে। |
---|---|
আউটপুট | আউটপুট ডেটার একটি বহুমাত্রিক অ্যারে, বা int, ফ্লোট, লং এবং বাইট সহ আদিম প্রকারের একটি Buffer । যখন একটি Buffer ব্যবহার করা হয়, কলকারীকে অবশ্যই নিশ্চিত করতে হবে যে এটি উপযুক্ত লেখার অবস্থান সেট করেছে। একটি নাল মান অনুমোদিত, এবং কিছু ক্ষেত্রে উপযোগী, যেমন, যদি কলকারী একটি Delegate ব্যবহার করে যা বাফার হ্যান্ডেল ইন্টারপকে অনুমতি দেয়, এবং এই ধরনের একটি বাফার আউটপুট টেনসরের সাথে আবদ্ধ থাকে (এছাড়াও দেখুন ইন্টারপ্রেটার। বিকল্পগুলি# Tensor (বুলিয়ান) ), অথবা যদি গ্রাফে গতিশীল আকৃতির আউটপুট থাকে এবং কলকারীকে অবশ্যই আউটপুট টেনসরের আকৃতিটি জিজ্ঞাসা করতে হবে অনুমান আহ্বান করার পরে, সরাসরি আউটপুট Tensor থেকে ডেটা আনতে হবে ( Tensor.asReadOnlyBuffer() মাধ্যমে)। |
নিক্ষেপ করে
অবৈধ আর্গুমেন্ট ব্যতিক্রম | যদি input শূন্য বা খালি হয়, অথবা যদি অনুমান চালানোর সময় একটি ত্রুটি ঘটে। |
---|---|
অবৈধ আর্গুমেন্ট ব্যতিক্রম | (পরীক্ষামূলক, পরিবর্তন সাপেক্ষে) যদি অনুমান setCancelled(true) দ্বারা বাধাপ্রাপ্ত হয়। |
সর্বজনীন বিমূর্ত অকার্যকর রানফরমাল্টিপল ইনপুটআউটপুট ( অবজেক্ট [] ইনপুট, মানচিত্র < পূর্ণসংখ্যা , অবজেক্ট > আউটপুট)
মডেল অনুমান চালায় যদি মডেল একাধিক ইনপুট নেয়, বা একাধিক আউটপুট প্রদান করে।
সতর্কতা: এপিআই আরও দক্ষ হয় যদি Buffer
s (সাধারণত সরাসরি, তবে প্রয়োজনীয় নয়) ইনপুট/আউটপুট ডেটা প্রকার হিসাবে ব্যবহার করা হয়। অনুগ্রহ করে ভাল পারফরম্যান্সের জন্য আদিম ডেটা ফিড করতে Buffer
ব্যবহার করার কথা বিবেচনা করুন। নিম্নলিখিত কংক্রিট Buffer
প্রকারগুলি সমর্থিত:
-
ByteBuffer
- যে কোন অন্তর্নিহিত আদিম টেনসর প্রকারের সাথে সামঞ্জস্যপূর্ণ। -
FloatBuffer
- ফ্লোট টেনসরের সাথে সামঞ্জস্যপূর্ণ। -
IntBuffer
- int32 টেনসরের সাথে সামঞ্জস্যপূর্ণ। -
LongBuffer
- int64 টেনসরের সাথে সামঞ্জস্যপূর্ণ।
Buffer
s নয় বা স্কেলার ইনপুট হিসাবে। দ্রষ্টব্য: inputs
এবং outputs
স্বতন্ত্র উপাদানগুলির জন্য null
মানগুলি শুধুমাত্র তখনই অনুমোদিত হয় যখন কলকারী একটি Delegate
ব্যবহার করে যা বাফার হ্যান্ডেল ইন্টারপকে অনুমতি দেয় এবং এই ধরনের একটি বাফার সংশ্লিষ্ট ইনপুট বা আউটপুট Tensor
(গুলি) এর সাথে আবদ্ধ থাকে৷
পরামিতি
ইনপুট | ইনপুট ডেটার একটি অ্যারে। ইনপুটগুলি মডেলের ইনপুটগুলির মতো একই ক্রমে হওয়া উচিত৷ প্রতিটি ইনপুট একটি অ্যারে বা বহুমাত্রিক অ্যারে, বা int, ফ্লোট, লং এবং বাইট সহ আদিম ধরণের Buffer হতে পারে। বড় ইনপুট ডেটা পাস করার জন্য Buffer হল পছন্দের উপায়, যেখানে স্ট্রিং প্রকারের জন্য (মাল্টি-ডাইমেনশনাল) অ্যারে ইনপুট পাথ ব্যবহার করা প্রয়োজন। যখন Buffer ব্যবহার করা হয়, মডেল অনুমান করা না হওয়া পর্যন্ত এর বিষয়বস্তু অপরিবর্তিত থাকা উচিত, এবং কলকারীকে অবশ্যই নিশ্চিত করতে হবে যে Buffer উপযুক্ত পঠিত অবস্থানে রয়েছে। |
---|---|
আউটপুট | একটি মানচিত্র ম্যাপিং আউটপুট সূচক আউটপুট ডেটার বহুমাত্রিক অ্যারে বা int, ফ্লোট, লং এবং বাইট সহ আদিম প্রকারের Buffer । এটি শুধুমাত্র আউটপুট ব্যবহার করার জন্য এন্ট্রি রাখা প্রয়োজন. যখন একটি Buffer ব্যবহার করা হয়, কলকারীকে অবশ্যই নিশ্চিত করতে হবে যে এটি উপযুক্ত লেখার অবস্থান সেট করেছে। আউটপুট টেনসর ডেটার জন্য বাফার হ্যান্ডেলগুলি ব্যবহার করা হয় বা যেখানে আউটপুটগুলি গতিশীলভাবে আকৃতির হয় এবং কলকারীকে অবশ্যই আউটপুট টেনসরের আকার সম্পর্কে জিজ্ঞাসা করতে হবে, অনুমান আহ্বান করার পরে, আউটপুট Tensor থেকে সরাসরি ডেটা আনার জন্য মানচিত্রটি খালি হতে পারে ( Tensor.asReadOnlyBuffer() মাধ্যমে। |
নিক্ষেপ করে
অবৈধ আর্গুমেন্ট ব্যতিক্রম | যদি inputs নাল বা খালি হয়, যদি outputs শূন্য হয়, অথবা যদি অনুমান চালানোর সময় একটি ত্রুটি ঘটে। |
---|