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);
 }
 

इनपुट और आउटपुट के क्रम निर्धारित किए जाते हैं जब TensorFlow मॉडल को Toco के साथ TensorFlowLite मॉडल में परिवर्तित किया जाता है, जैसा कि इनपुट के डिफ़ॉल्ट आकार होते हैं।

जब इनपुट (बहु-आयामी) सरणियों के रूप में प्रदान किए जाते हैं, तो संबंधित इनपुट टेंसर (ओं) को उस सरणी के आकार के अनुसार परोक्ष रूप से आकार दिया जाएगा। जब इनपुट Buffer प्रकार के रूप में प्रदान किए जाते हैं, तो कोई अंतर्निहित आकार नहीं दिया जाता है; कॉलर को यह सुनिश्चित करना चाहिए कि Buffer बाइट का आकार या तो संबंधित टेंसर से मेल खाता है, या वे पहले टेन्सर का आकार resizeInput(int, int[]) । Tensor आकार और प्रकार की जानकारी Tensor वर्ग के माध्यम से प्राप्त की जा सकती है, जो getInputTensor(int) और getOutputTensor(int) के माध्यम से उपलब्ध है।

चेतावनी: InterpreterApi उदाहरण थ्रेड-सुरक्षित नहीं हैं।

चेतावनी: एक InterpreterApi इंस्टेंस के पास ऐसे संसाधन होते हैं जिन्हें स्पष्ट रूप से close() को लागू करके मुक्त किया जाना चाहिए

टीएफलाइट लाइब्रेरी एनडीके एपीआई 19 के खिलाफ बनाई गई है। यह 19 से नीचे के एंड्रॉइड एपीआई स्तरों के लिए काम कर सकती है, लेकिन इसकी गारंटी नहीं है।

नेस्टेड कक्षाएं

कक्षा दुभाषिया एपीआई। विकल्प रनटाइम दुभाषिया व्यवहार को नियंत्रित करने के लिए एक विकल्प वर्ग।

सार्वजनिक तरीके

सार शून्य
आवंटित टेंसर ()
यदि आवश्यक हो, तो सभी टेंसरों के लिए आवंटन को स्पष्ट रूप से अपडेट करें।
सार शून्य
बंद करें ()
InterpreterApi इंस्टेंस से जुड़े संसाधन जारी करें।
स्थिर दुभाषिया एपीआई
बनाएं ( फ़ाइल मॉडलफाइल, दुभाषिया एपीआई। विकल्प विकल्प)
निर्दिष्ट मॉडल और विकल्पों का उपयोग करके एक InterpreterApi इंस्टेंस का निर्माण करता है।
स्थिर दुभाषिया एपीआई
बनाएँ ( बाइटबफ़र बाइटबफ़र, इंटरप्रेटरएपी । विकल्प विकल्प)
निर्दिष्ट मॉडल और विकल्पों का उपयोग करके एक InterpreterApi इंस्टेंस का निर्माण करता है।
सार int
getInputIndex ( स्ट्रिंग opName)
इनपुट के op नाम दिए गए इनपुट की अनुक्रमणिका प्राप्त करता है।
सार टेंसर
getInputTensor (इंट इनपुट इंडेक्स)
प्रदान किए गए इनपुट इंडेक्स से जुड़े टेंसर को प्राप्त करें।
सार int
getInputTensorCount ()
इनपुट टेंसर की संख्या प्राप्त करें।
सार लॉन्ग
getLastNativeInferenceDurationNanoseconds ()
मूल अनुमान समय लौटाता है।
सार int
getOutputIndex ( स्ट्रिंग opName)
आउटपुट के op नाम दिए गए आउटपुट का इंडेक्स प्राप्त करता है।
सार टेंसर
getOutputTensor (इंट आउटपुट इंडेक्स)
प्रदान किए गए आउटपुट इंडेक्स से जुड़े टेंसर को प्राप्त करें।
सार int
getOutputTensorCount ()
आउटपुट टेंसर की संख्या प्राप्त करें।
सार शून्य
आकार बदलें इनपुट (int idx, int [] मंद, बूलियन सख्त)
दिए गए डिम में नेटिव मॉडल के idx-वें इनपुट का आकार बदलता है।
सार शून्य
आकार बदलें इनपुट (int idx, int [] dims)
दिए गए डिम में नेटिव मॉडल के idx-वें इनपुट का आकार बदलता है।
सार शून्य
रन ( ऑब्जेक्ट इनपुट, ऑब्जेक्ट आउटपुट)
मॉडल अनुमान चलाता है यदि मॉडल केवल एक इनपुट लेता है, और केवल एक आउटपुट प्रदान करता है।
सार शून्य
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...
 

नोट: कुछ ग्राफ़ में गतिशील रूप से आकार के आउटपुट होते हैं, इस स्थिति में आउटपुट आकार पूरी तरह से प्रचारित नहीं हो सकता है जब तक कि अनुमान निष्पादित नहीं किया जाता है।

फेंकता
IllegalStateException यदि ग्राफ के टेंसरों को सफलतापूर्वक आवंटित नहीं किया जा सकता है।

सार्वजनिक सार शून्य करीब ()

InterpreterApi इंस्टेंस से जुड़े संसाधन जारी करें।

सार्वजनिक स्थैतिक दुभाषिया एपीआई बनाएं ( फ़ाइल मॉडलफाइल, दुभाषिया एपीआई। विकल्प विकल्प)

निर्दिष्ट मॉडल और विकल्पों का उपयोग करके एक InterpreterApi इंस्टेंस का निर्माण करता है। मॉडल को एक फाइल से लोड किया जाएगा।

मापदंडों
मॉडलफ़ाइल एक पूर्व-प्रशिक्षित TF लाइट मॉडल वाली फ़ाइल।
विकल्प दुभाषिया व्यवहार को अनुकूलित करने के लिए विकल्पों का एक सेट।
फेंकता
अवैध तर्क अपवाद यदि modelFile एक वैध TensorFlow लाइट मॉडल को एन्कोड नहीं करता है।

सार्वजनिक स्थैतिक दुभाषिया एपीआई बनाएं ( बाइटबफर बाइटबफर, इंटरप्रेटरएपीआई । विकल्प विकल्प)

निर्दिष्ट मॉडल और विकल्पों का उपयोग करके एक InterpreterApi इंस्टेंस का निर्माण करता है। मॉडल को ByteBuffer से पढ़ा जाएगा।

मापदंडों
बाइटबफर एक पूर्व-प्रशिक्षित TF लाइट मॉडल, बाइनरी क्रमबद्ध रूप में। InterpreterApi इंस्टेंस के निर्माण के बाद बाइटबफर को संशोधित नहीं किया जाना चाहिए। ByteBuffer या तो एक MappedByteBuffer हो सकता है जो एक मॉडल फ़ाइल को मेमोरी-मैप करता है, या नेटिवऑर्डर () का एक सीधा ByteBuffer जिसमें एक मॉडल की बाइट्स सामग्री होती है।
विकल्प दुभाषिया व्यवहार को अनुकूलित करने के लिए विकल्पों का एक सेट।
फेंकता
अवैध तर्क अपवाद यदि byteBuffer MappedByteBuffer है और न ही देशी ऑर्डर का प्रत्यक्ष ByteBuffer है।

सार्वजनिक सार int getInputIndex ( स्ट्रिंग opName)

इनपुट के op नाम दिए गए इनपुट की अनुक्रमणिका प्राप्त करता है।

मापदंडों
opName
फेंकता
अवैध तर्क अपवाद यदि opName दुभाषिया को इनिशियलाइज़ करने के लिए उपयोग किए गए मॉडल में किसी इनपुट से मेल नहीं खाता है।

सार्वजनिक सार Tensor getInputTensor (int inputIndex)

प्रदान किए गए इनपुट इंडेक्स से जुड़े टेंसर को प्राप्त करें।

मापदंडों
इनपुट इंडेक्स
फेंकता
अवैध तर्क अपवाद यदि inputIndex नकारात्मक है या मॉडल इनपुट की संख्या से छोटा नहीं है।

सार्वजनिक सार int getInputTensorCount ()

इनपुट टेंसर की संख्या प्राप्त करें।

सार्वजनिक सार लांग getLastNativeInferenceDurationDurationNanoseconds ()

मूल अनुमान समय लौटाता है।

फेंकता
अवैध तर्क अपवाद यदि मॉडल दुभाषिया द्वारा प्रारंभ नहीं किया गया है।

सार्वजनिक सार int getOutputIndex ( स्ट्रिंग opName)

आउटपुट के op नाम दिए गए आउटपुट का इंडेक्स प्राप्त करता है।

मापदंडों
opName
फेंकता
अवैध तर्क अपवाद यदि opName दुभाषिया को इनिशियलाइज़ करने के लिए उपयोग किए गए मॉडल के किसी भी आउटपुट से मेल नहीं खाता है।

सार्वजनिक सार Tensor getOutputTensor (int outputIndex)

प्रदान किए गए आउटपुट इंडेक्स से जुड़े टेंसर को प्राप्त करें।

नोट: आउटपुट टेंसर विवरण (जैसे, आकार) पूरी तरह से आबाद नहीं हो सकता है जब तक कि अनुमान निष्पादित नहीं किया जाता है। यदि आपको अनुमान चलाने से पहले * अद्यतन विवरण की आवश्यकता है (उदाहरण के लिए, इनपुट टेंसर का आकार बदलने के बाद, जो आउटपुट टेंसर आकार को अमान्य कर सकता है), आवंटन और आकार प्रसार को स्पष्ट रूप से ट्रिगर करने के लिए allocateTensors() का उपयोग करें। ध्यान दें कि, आउटपुट आकार वाले ग्राफ़ के लिए जो इनपुट *मान* पर निर्भर हैं, आउटपुट आकार को अनुमान चलने तक पूरी तरह से निर्धारित नहीं किया जा सकता है।

मापदंडों
आउटपुट इंडेक्स
फेंकता
अवैध तर्क अपवाद यदि outputIndex नकारात्मक है या मॉडल आउटपुट की संख्या से छोटा नहीं है।

सार्वजनिक सार int getOutputTensorCount ()

आउटपुट टेंसर की संख्या प्राप्त करें।

सार्वजनिक सार शून्य आकार बदलें इनपुट (int idx, int [] मंद, बूलियन सख्त)

दिए गए डिम में नेटिव मॉडल के idx-वें इनपुट का आकार बदलता है।

जब `सख्त` सत्य है, तो केवल अज्ञात आयामों का आकार बदला जा सकता है। अज्ञात आयामों को `टेन्सर.shapeSignature()` द्वारा लौटाए गए सरणी में `-1` के रूप में दर्शाया गया है।

मापदंडों
आईडीएक्स
मंद
कठोर
फेंकता
अवैध तर्क अपवाद यदि idx ऋणात्मक है या मॉडल इनपुट की संख्या से छोटा नहीं है; या यदि idx-वें इनपुट का आकार बदलते समय त्रुटि होती है। इसके अतिरिक्त, त्रुटि तब होती है जब `सख्त` सही होने पर निश्चित आयामों के साथ एक टेंसर का आकार बदलने का प्रयास किया जाता है।

सार्वजनिक सार शून्य आकार बदलें इनपुट (int idx, int [] dims)

दिए गए डिम में नेटिव मॉडल के idx-वें इनपुट का आकार बदलता है।

मापदंडों
आईडीएक्स
मंद
फेंकता
अवैध तर्क अपवाद यदि idx ऋणात्मक है या मॉडल इनपुट की संख्या से छोटा नहीं है; या यदि idx-वें इनपुट का आकार बदलते समय त्रुटि होती है।

सार्वजनिक अमूर्त शून्य रन ( ऑब्जेक्ट इनपुट, ऑब्जेक्ट आउटपुट)

मॉडल अनुमान चलाता है यदि मॉडल केवल एक इनपुट लेता है, और केवल एक आउटपुट प्रदान करता है।

चेतावनी: यदि इनपुट/आउटपुट डेटा प्रकार के रूप में एक Buffer (अधिमानतः प्रत्यक्ष, लेकिन आवश्यक नहीं) का उपयोग किया जाता है तो एपीआई अधिक कुशल है। कृपया बेहतर प्रदर्शन के लिए आदिम डेटा को खिलाने और लाने के लिए Buffer का उपयोग करने पर विचार करें। निम्नलिखित ठोस Buffer प्रकार समर्थित हैं:

  • ByteBuffer - किसी भी अंतर्निहित आदिम टेंसर प्रकार के साथ संगत।
  • FloatBuffer - फ्लोट टेंसर के साथ संगत।
  • IntBuffer - int32 Tensors के साथ संगत।
  • LongBuffer - int64 Tensors के साथ संगत।
ध्यान दें कि बूलियन प्रकार केवल सरणियों के रूप में समर्थित हैं, Buffer एस या स्केलर इनपुट के रूप में नहीं।

मापदंडों
इनपुट एक सरणी या बहुआयामी सरणी, या आदिम प्रकार का एक Buffer जिसमें इंट, फ्लोट, लॉन्ग और बाइट शामिल हैं। Buffer आदिम प्रकारों के लिए बड़े इनपुट डेटा को पास करने का पसंदीदा तरीका है, जबकि स्ट्रिंग प्रकारों को (बहु-आयामी) सरणी इनपुट पथ का उपयोग करने की आवश्यकता होती है। जब एक Buffer का उपयोग किया जाता है, तो इसकी सामग्री तब तक अपरिवर्तित रहनी चाहिए जब तक कि मॉडल का अनुमान नहीं हो जाता है, और कॉलर को यह सुनिश्चित करना चाहिए कि Buffer उपयुक्त पढ़ने की स्थिति में है। एक null मान की अनुमति केवल तभी दी जाती है जब कॉलर एक Delegate का उपयोग कर रहा हो जो बफर हैंडल इंटरऑप की अनुमति देता है, और ऐसा बफर इनपुट Tensor से जुड़ा हुआ है।
उत्पादन आउटपुट डेटा की एक बहुआयामी सरणी, या इंट, फ्लोट, लॉन्ग और बाइट सहित आदिम प्रकारों का एक Buffer । जब एक Buffer का उपयोग किया जाता है, तो कॉलर को यह सुनिश्चित करना चाहिए कि यह उपयुक्त लेखन स्थिति सेट है। एक शून्य मान की अनुमति है, और कुछ मामलों के लिए उपयोगी है, उदाहरण के लिए, यदि कॉलर एक Delegate का उपयोग कर रहा है जो बफर हैंडल इंटरऑप की अनुमति देता है, और ऐसा बफर आउटपुट Tensor से जुड़ा हुआ है (इंटरप्रेटर भी देखें। विकल्प#setAllowBufferHandleOutput(boolean) ), या यदि ग्राफ़ में गतिशील रूप से आकार के आउटपुट हैं और कॉल करने वाले को आउटपुट Tensor आकार को क्वेरी करना चाहिए, तो अनुमान लगाने के बाद, आउटपुट टेंसर से सीधे डेटा प्राप्त करना ( Tensor.asReadOnlyBuffer() के माध्यम से)।
फेंकता
अवैध तर्क अपवाद यदि input शून्य या खाली है, या यदि अनुमान चलाते समय कोई त्रुटि होती है।
अवैध तर्क अपवाद (प्रायोगिक, परिवर्तन के अधीन) यदि अनुमान को setCancelled(true) द्वारा बाधित किया जाता है।

सार्वजनिक सार शून्य रनफॉरमल्टीपलइनपुट आउटपुट ( ऑब्जेक्ट [] इनपुट, मैप < इंटीजर , ऑब्जेक्ट > आउटपुट)

यदि मॉडल एकाधिक इनपुट लेता है, या एकाधिक आउटपुट देता है तो मॉडल अनुमान चलाता है।

चेतावनी: यदि इनपुट/आउटपुट डेटा प्रकारों के रूप में Buffer एस (अधिमानतः प्रत्यक्ष, लेकिन आवश्यक नहीं) का उपयोग किया जाता है तो एपीआई अधिक कुशल है। कृपया बेहतर प्रदर्शन के लिए आदिम डेटा को खिलाने और लाने के लिए Buffer का उपयोग करने पर विचार करें। निम्नलिखित ठोस Buffer प्रकार समर्थित हैं:

  • ByteBuffer - किसी भी अंतर्निहित आदिम टेंसर प्रकार के साथ संगत।
  • FloatBuffer - फ्लोट टेंसर के साथ संगत।
  • IntBuffer - int32 Tensors के साथ संगत।
  • LongBuffer - int64 Tensors के साथ संगत।
ध्यान दें कि बूलियन प्रकार केवल सरणियों के रूप में समर्थित हैं, Buffer एस या स्केलर इनपुट के रूप में नहीं।

नोट: inputs और outputs के व्यक्तिगत तत्वों के लिए null मानों की अनुमति केवल तभी दी जाती है जब कॉलर एक Delegate का उपयोग कर रहा हो जो बफर हैंडल इंटरऑप की अनुमति देता है, और ऐसा बफर संबंधित इनपुट या आउटपुट Tensor (एस) से जुड़ा हुआ है।

मापदंडों
आदानों इनपुट डेटा की एक सरणी। इनपुट मॉडल के इनपुट के समान क्रम में होना चाहिए। प्रत्येक इनपुट एक सरणी या बहुआयामी सरणी हो सकता है, या इंट, फ्लोट, लॉन्ग और बाइट सहित आदिम प्रकार का Buffer हो सकता है। Buffer बड़े इनपुट डेटा को पास करने का पसंदीदा तरीका है, जबकि स्ट्रिंग प्रकारों को (बहु-आयामी) सरणी इनपुट पथ का उपयोग करने की आवश्यकता होती है। जब Buffer का उपयोग किया जाता है, तो इसकी सामग्री तब तक अपरिवर्तित रहनी चाहिए जब तक कि मॉडल का अनुमान नहीं लगाया जाता है, और कॉलर को यह सुनिश्चित करना चाहिए कि Buffer उपयुक्त पढ़ने की स्थिति में है।
आउटपुट आउटपुट डेटा के बहुआयामी सरणियों या इंट, फ्लोट, लॉन्ग और बाइट सहित आदिम प्रकार के Buffer के लिए एक मैप मैपिंग आउटपुट इंडेक्स। इसे केवल उपयोग किए जाने वाले आउटपुट के लिए प्रविष्टियां रखने की आवश्यकता है। जब एक Buffer का उपयोग किया जाता है, तो कॉलर को यह सुनिश्चित करना चाहिए कि यह उपयुक्त लेखन स्थिति सेट है। नक्शा उन मामलों के लिए खाली हो सकता है जहां आउटपुट टेंसर डेटा के लिए बफर हैंडल का उपयोग किया जाता है, या ऐसे मामले जहां आउटपुट गतिशील रूप से आकार में होते हैं और कॉलर को आउटपुट टेंसर आकार को सीधे आउटपुट टेंसर से प्राप्त करने के बाद आउटपुट Tensor आकार को क्वेरी करना चाहिए ( Tensor.asReadOnlyBuffer() के माध्यम से)।
फेंकता
अवैध तर्क अपवाद यदि inputs शून्य या खाली है, यदि outputs शून्य है, या यदि अनुमान चलाते समय कोई त्रुटि होती है।