Interpreter

पब्लिक फ़ाइनल क्लास अनुवादक

TensorFlow Lite की मदद से, मॉडल का अनुमान लगाने के लिए ड्राइवर क्लास.

ध्यान दें: अगर आपको नीचे दी गई "एक्सपेरिमेंटल" एपीआई सुविधाओं के ऐक्सेस की ज़रूरत नहीं है, तो सीधे अनुवादक का इस्तेमाल करने के बजाय, InterpreterApi और Interpreterफ़ैक्ट्री के नाम का इस्तेमाल करें.

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 के मॉडल को Toco के साथ TensorFlowLite मॉडल में बदला जाता है. इनपुट के डिफ़ॉल्ट आकार भी इस तरह से तय किए जाते हैं.

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

चेतावनी:Interpreter इंस्टेंस, थ्रेड की सुविधा वाले नहीं हैं. Interpreter के पास ऐसे संसाधनों का मालिकाना हक होता है जिन्हें close() का इस्तेमाल करके, साफ़ तौर पर खाली किया जाना ज़रूरी है

TFLite लाइब्रेरी को NDK API 19 के हिसाब से बनाया गया है. यह Android एपीआई के 19 से पहले के लेवल पर काम कर सकता है. हालांकि, इसकी कोई गारंटी नहीं है.

नेस्ट की गई क्लास

क्लास Interpreter.Options रनटाइम के दौरान अनुवादक के व्यवहार को कंट्रोल करने के लिए, विकल्प क्लास. 

पब्लिक कंस्ट्रक्टर

अनुवादक(फ़ाइल मॉडल फ़ाइल)
Interpreter को शुरू करता है.
अनुवादक(फ़ाइल Modelफ़ाइल, Interpreter.Options के विकल्प)
Interpreter को शुरू करता है और अनुवादक के व्यवहार को पसंद के मुताबिक बनाने के विकल्पों के बारे में बताता है.
अनुवादक(ByteBuffer byteBuffer)
किसी मॉडल फ़ाइल के ByteBuffer के साथ Interpreter को शुरू करता है.
अनुवादक(ByteBuffer byteBuffer, Interpreter.Options के विकल्प)
मॉडल फ़ाइल के ByteBuffer और कस्टम Interpreter.Options के सेट के साथ Interpreter को शुरू करता है.

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

void
allocateTensors()
अगर ज़रूरी हो, तो सभी टेन्सर के लिए आवंटन को साफ़ तौर पर अपडेट करता है.
void
close() (बंद करें)
InterpreterApi इंस्टेंस से जुड़े संसाधन रिलीज़ करें.
int
getInputIndex(स्ट्रिंग opName)
इनपुट के ऑपरेटर के नाम के आधार पर, उस इनपुट के इंडेक्स की जानकारी देता है.
टेन्सर
getInputTensor(int inputIndex)
दिए गए इनपुट इंडेक्स से जुड़े Tensor की जानकारी देता है.
int
getInputTensorCount()
इनपुट टेंसर की संख्या का पता लगाता है.
टेन्सर
getInputTensorFromSignature(स्ट्रिंग इनपुट का नाम, स्ट्रिंग हस्ताक्षरकी)
दिए गए इनपुट नाम और हस्ताक्षर के तरीके के नाम से जुड़े Tensor को पाता है.
लंबी
getLastNativeInferenceDurationNanoseconds()
नेटिव अनुमान का समय दिखाता है.
int
getOutputIndex(स्ट्रिंग opName)
आउटपुट के ऑपरेटर के नाम के आधार पर, आउटपुट के इंडेक्स की जानकारी देता है.
टेन्सर
getOutputTensor(इंट आउटपुट इंडेक्स)
दिए गए आउटपुट इंडेक्स से जुड़े Tensor की जानकारी देता है.
int
getOutputTensorCount()
आउटपुट टेन्सर की संख्या की जानकारी देता है.
टेन्सर
getOutputTensorFromSignature(स्ट्रिंग आउटपुट नाम, स्ट्रिंग हस्ताक्षरकी)
यह विकल्प, हस्ताक्षर के खास तरीके से दिए गए आउटपुट नाम से जुड़े Tensor को जोड़ता है.
स्ट्रिंग[]
getSignatureInputs(स्ट्रिंगSignatureKey)
signatureKey तरीके के लिए SignatureDefs के इनपुट की सूची पाएं.
स्ट्रिंग[]
getSignatureKeys()
मॉडल में उपलब्ध, SignatureDef में एक्सपोर्ट किए गए तरीकों के नामों की सूची पाएं.
स्ट्रिंग[]
getSignatureOutputs(स्ट्रिंग हस्ताक्षर कुंजी)
signatureKey तरीके के लिए SignatureDefs के आउटपुट की सूची पाएं.
void
resetVariableTensors()
बेहतर: सभी वैरिएबल टेंसर को डिफ़ॉल्ट वैल्यू पर रीसेट करता है.
void
resizeInput(int idx, int[] dims, boolean strict)
दिए गए डिम में, नेटिव मॉडल के idx-वें इनपुट का साइज़ बदलता है.
void
resizeInput(int idx, int[] डिम)
दिए गए डिम में, नेटिव मॉडल के idx-वें इनपुट का साइज़ बदलता है.
void
run(ऑब्जेक्ट इनपुट, ऑब्जेक्ट आउटपुट)
अगर मॉडल सिर्फ़ एक इनपुट लेता है और सिर्फ़ एक आउटपुट देता है, तो मॉडल अनुमान चलाता है.
void
runForMultipleInputsOutputs(Object[] इनपुट, मैप<इंटिजरऑब्जेक्ट> आउटपुट)
अगर मॉडल एक से ज़्यादा इनपुट लेता है या एक से ज़्यादा आउटपुट देता है, तो मॉडल अनुमान चलाता है.
void
runSignature(मैप<स्ट्रिंगऑब्जेक्ट> इनपुट, मैप<स्ट्रिंगऑब्जेक्ट> आउटपुट)
runSignature(Map, Map, String) की तरह है, लेकिन यह मानते हुए कि मॉडल में एक SignatureDef अगर है, लेकिन उसके लिए SignatureKey को पास करने की ज़रूरत नहीं होती है, तो वह ज़रूरी नहीं है.
void
runSignature(Maps<स्ट्रिंगऑब्जेक्ट> इनपुट, मैप<स्ट्रिंगऑब्जेक्ट> आउटपुट, स्ट्रिंगहस्ताक्षर कुंजी)
signatureKey से मिले SignatureDef के आधार पर मॉडल अनुमान चलाता है.
void
setCancelled(बूलियन रद्द किया गया)
बेहतर सेटिंग: इससे, run(Object, Object) पर किए जाने वाले कॉल के बीच में, अनुमान में रुकावट आती है.

इनहेरिट किए गए तरीके

पब्लिक कंस्ट्रक्टर

सार्वजनिक अनुवादक (फ़ाइल मॉडल फ़ाइल)

Interpreter को शुरू करता है.

पैरामीटर
modelFile पहले से ट्रेन किए गए TF Lite मॉडल की फ़ाइल.
थ्रो
IllegalArgumentException अगर modelFile, मान्य TensorFlow Lite मॉडल को कोड में नहीं बदलता.

सार्वजनिक अनुवादक (फ़ाइल मॉडल फ़ाइल, Interpreter.Options विकल्प)

Interpreter को शुरू करता है और अनुवादक के व्यवहार को पसंद के मुताबिक बनाने के विकल्पों के बारे में बताता है.

पैरामीटर
modelFile पहले से ट्रेनिंग वाले TF Lite मॉडल की फ़ाइल
विकल्प अनुवादक के व्यवहार को पसंद के मुताबिक बनाने के लिए विकल्पों का सेट
थ्रो
IllegalArgumentException अगर modelFile, मान्य TensorFlow Lite मॉडल को कोड में नहीं बदलता.

सार्वजनिक अनुवादक (ByteBuffer byteBuffer)

किसी मॉडल फ़ाइल के ByteBuffer के साथ Interpreter को शुरू करता है.

Interpreter के बनने के बाद, ByteBuffer में बदलाव नहीं करना चाहिए. ByteBuffer या तो एक MappedByteBuffer हो सकता है जो किसी मॉडल फ़ाइल को मेमोरी-मैप करता है. इसके अलावा, \nनेटिव ऑर्डर() का डायरेक्ट ByteBuffer भी हो सकता है जिसमें किसी मॉडल का बाइट कॉन्टेंट होता है.

पैरामीटर
byteBuffer
थ्रो
IllegalArgumentException अगर byteBuffer, localOrder का MappedByteBuffer या डायरेक्ट ByteBuffer नहीं है.

सार्वजनिक अनुवादक (ByteBuffer byteBuffer, Interpreter.Options विकल्प)

मॉडल फ़ाइल के ByteBuffer और कस्टम Interpreter.Options के सेट के साथ Interpreter को शुरू करता है.

Interpreter के बनने के बाद, ByteBuffer में बदलाव नहीं किया जाना चाहिए. ByteBuffer या तो एक MappedByteBuffer हो सकता है जो किसी मॉडल फ़ाइल को मेमोरी मैप करता है. इसके अलावा, वह NativeOrder() का ByteBuffer भी हो सकता है जिसमें किसी मॉडल का बाइट कॉन्टेंट शामिल हो.

पैरामीटर
byteBuffer
विकल्प
थ्रो
IllegalArgumentException अगर byteBuffer, localOrder का MappedByteBuffer या डायरेक्ट ByteBuffer नहीं है.

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

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

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

दिए गए इनपुट इंडेक्स से जुड़े Tensor की जानकारी देता है.

पैरामीटर
inputIndex

Public int getInputTensorCount ()

इनपुट टेंसर की संख्या का पता लगाता है.

सार्वजनिक Tensor getInputTensorFromSignature (StringinputName, स्ट्रिंगSignatureKey)

दिए गए इनपुट नाम और हस्ताक्षर के तरीके के नाम से जुड़े Tensor को पाता है.

चेतावनी: इस एपीआई को फ़िलहाल आज़माया जा रहा है. इसमें बदलाव हो सकता है.

पैरामीटर
inputName हस्ताक्षर में नाम डालें.
signatureKey SignatureDef को पहचानने वाली 'हस्ताक्षर कुंजी', अगर मॉडल में एक हस्ताक्षर हो, तो उसे शून्य किया जा सकता है.
थ्रो
IllegalArgumentException अगर inputName या signatureKey शून्य या खाली है, या अमान्य नाम दिया गया है.

सार्वजनिक लॉन्ग getLastNativeInferenceDurationNanoseconds ()

नेटिव अनुमान का समय दिखाता है.

Public int getOutputIndex (स्ट्रिंग opName)

आउटपुट के ऑपरेटर के नाम के आधार पर, आउटपुट के इंडेक्स की जानकारी देता है.

पैरामीटर
opName

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

दिए गए आउटपुट इंडेक्स से जुड़े Tensor की जानकारी देता है.

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

पैरामीटर
outputIndex

Public int getOutputTensorCount ()

आउटपुट टेन्सर की संख्या की जानकारी देता है.

सार्वजनिक Tensor getOutputTensorFromSignature (स्ट्रिंग आउटपुट नाम, स्ट्रिंग हस्ताक्षर की)

यह विकल्प, हस्ताक्षर के खास तरीके से दिए गए आउटपुट नाम से जुड़े Tensor को जोड़ता है.

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

चेतावनी: इस एपीआई को फ़िलहाल आज़माया जा रहा है. इसमें बदलाव हो सकता है.

पैरामीटर
outputName हस्ताक्षर में आउटपुट नाम.
signatureKey SignatureDef को पहचानने वाली 'हस्ताक्षर कुंजी', अगर मॉडल में एक हस्ताक्षर हो, तो उसे शून्य किया जा सकता है.
थ्रो
IllegalArgumentException अगर outputName या signatureKey शून्य या खाली है या अमान्य नाम दिया गया है.

सार्वजनिक स्ट्रिंग[] getSignatureInputs (स्ट्रिंगSignatureKey)

signatureKey तरीके के लिए SignatureDefs के इनपुट की सूची पाएं.

चेतावनी: इस एपीआई को फ़िलहाल आज़माया जा रहा है. इसमें बदलाव हो सकता है.

पैरामीटर
signatureKey

सार्वजनिक स्ट्रिंग[] getSignatureKeys ()

मॉडल में उपलब्ध, SignatureDef में एक्सपोर्ट किए गए तरीकों के नामों की सूची पाएं.

चेतावनी: इस एपीआई को फ़िलहाल आज़माया जा रहा है. इसमें बदलाव हो सकता है.

सार्वजनिक स्ट्रिंग[] getSignatureOutputs (स्ट्रिंग हस्ताक्षरकी)

signatureKey तरीके के लिए SignatureDefs के आउटपुट की सूची पाएं.

चेतावनी: इस एपीआई को फ़िलहाल आज़माया जा रहा है. इसमें बदलाव हो सकता है.

पैरामीटर
signatureKey

Public void resetVariableTensors ()

बेहतर: सभी वैरिएबल टेंसर को डिफ़ॉल्ट वैल्यू पर रीसेट करता है.

अगर किसी वैरिएबल टेन्सर में जुड़ा बफ़र नहीं होगा, तो उसे शून्य पर रीसेट कर दिया जाएगा.

चेतावनी: इस एपीआई को फ़िलहाल आज़माया जा रहा है. इसमें बदलाव हो सकता है.

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

दिए गए डिम में, नेटिव मॉडल के idx-वें इनपुट का साइज़ बदलता है.

जब `स्ट्रिक्ट` 'सही' पर सेट होता है, तो सिर्फ़ अज्ञात डाइमेंशन का साइज़ बदला जा सकता है. `Tensor.shapeSignature()` से मिले अरे में, अज्ञात डाइमेंशन को `-1` के तौर पर दिखाया जाता है.

पैरामीटर
idx
dims
कठोर

Public void resizeInput (int idx, int[] डिम)

दिए गए डिम में, नेटिव मॉडल के idx-वें इनपुट का साइज़ बदलता है.

पैरामीटर
idx
dims

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

अगर मॉडल सिर्फ़ एक इनपुट लेता है और सिर्फ़ एक आउटपुट देता है, तो मॉडल अनुमान चलाता है.

चेतावनी: अगर इनपुट/आउटपुट डेटा टाइप के तौर पर Buffer (सीधे तौर पर, लेकिन ज़रूरी नहीं है) का इस्तेमाल किया जाता है, तो एपीआई बेहतर तरीके से काम करता है. बेहतर परफ़ॉर्मेंस के लिए, कृपया शुरुआती डेटा को फ़ीड और फ़ेच करने के लिए, Buffer का इस्तेमाल करें. इन कंक्रीट Buffer टाइप का इस्तेमाल किया जा सकता है:

  • ByteBuffer - यह पहले से मौजूद किसी भी तरह के प्राचीन Tensor के साथ काम करता है.
  • FloatBuffer - फ़्लोट टेन्सर के साथ काम करता है.
  • IntBuffer - int32 Tensors के साथ काम करता है.
  • LongBuffer - int64 Tensors के साथ काम करता है.
ध्यान दें कि बूलियन टाइप सिर्फ़ अरे के तौर पर काम करते हैं, Buffer के तौर पर या स्केलर इनपुट के तौर पर नहीं.

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

Public void runForMultipleInputsOutputs (ऑब्जेक्ट[] इनपुट, मैप<इंटीजरऑब्जेक्ट> आउटपुट)

अगर मॉडल एक से ज़्यादा इनपुट लेता है या एक से ज़्यादा आउटपुट देता है, तो मॉडल अनुमान चलाता है.

चेतावनी: अगर Buffer (सीधे तौर पर, लेकिन ज़रूरी नहीं है) को इनपुट/आउटपुट डेटा टाइप के तौर पर इस्तेमाल किया जाता है, तो एपीआई बेहतर तरीके से काम करता है. बेहतर परफ़ॉर्मेंस के लिए, कृपया शुरुआती डेटा को फ़ीड और फ़ेच करने के लिए, Buffer का इस्तेमाल करें. इन कंक्रीट Buffer टाइप का इस्तेमाल किया जा सकता है:

  • ByteBuffer - यह पहले से मौजूद किसी भी तरह के प्राचीन Tensor के साथ काम करता है.
  • FloatBuffer - फ़्लोट टेन्सर के साथ काम करता है.
  • IntBuffer - int32 Tensors के साथ काम करता है.
  • LongBuffer - int64 Tensors के साथ काम करता है.
ध्यान दें कि बूलियन टाइप सिर्फ़ अरे के तौर पर काम करते हैं, Buffer के तौर पर या स्केलर इनपुट के तौर पर नहीं.

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

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

सार्वजनिक शून्य runSignature (मैप<स्ट्रिंगऑब्जेक्ट> इनपुट, मैप<स्ट्रिंगऑब्जेक्ट> आउटपुट)

runSignature(Map, Map, String) की तरह है, लेकिन यह मानते हुए कि मॉडल में एक SignatureDef अगर है, लेकिन उसके लिए SignatureKey को पास करने की ज़रूरत नहीं होती है, तो वह ज़रूरी नहीं है. अगर मॉडल में एक से ज़्यादा SignatureDef अगर है, तो वह एक अपवाद दिखाएगा.

चेतावनी: इस एपीआई को फ़िलहाल आज़माया जा रहा है. इसमें बदलाव हो सकता है.

पैरामीटर
इनपुट
आउटपुट

सार्वजनिक शून्य runSignature (मैप<स्ट्रिंगऑब्जेक्ट> इनपुट, मैप<स्ट्रिंगऑब्जेक्ट> आउटपुट, स्ट्रिंगकी हस्ताक्षर)

signatureKey से मिले SignatureDef के आधार पर मॉडल अनुमान चलाता है.

इनपुट और आउटपुट के लिए इस्तेमाल किए जा सकने वाले डेटा टाइप के बारे में ज़्यादा जानकारी के लिए, run(Object, Object) पर जाएं.

चेतावनी: इस एपीआई को फ़िलहाल आज़माया जा रहा है. इसमें बदलाव हो सकता है.

पैरामीटर
इनपुट SignatureDef में मौजूद इनपुट नाम से किसी इनपुट ऑब्जेक्ट तक का मैप.
आउटपुट SignatureDef में आउटपुट नाम से लेकर आउटपुट डेटा तक का मैप. अगर कॉलर, अनुमान के बाद सीधे Tensor डेटा से क्वेरी करना चाहता है, तो यह फ़ील्ड खाली हो सकता है. उदाहरण के लिए, अगर आउटपुट का आकार डाइनैमिक है या आउटपुट बफ़र हैंडल का इस्तेमाल किया जाता है.
signatureKey SignatureDef को पहचानने के लिए हस्ताक्षर कुंजी.
थ्रो
IllegalArgumentException अगर inputs शून्य या खाली है, अगर outputs या signatureKey शून्य है या अनुमान चलाने के दौरान कोई गड़बड़ी होती है.

Public void setCancelled (boolean cancelled)

बेहतर सेटिंग: इससे, run(Object, Object) पर किए जाने वाले कॉल के बीच में, अनुमान में रुकावट आती है.

इस फ़ंक्शन को कॉल करने पर, रद्द करने का फ़्लैग 'सही' पर सेट कर दिया जाएगा. अनुवादक, बोलकर दिए जाने वाले सुझावों के बीच के फ़्लैग की जांच करेगा. अगर यह true पर सेट है, तो अनुवादक एक्ज़ीक्यूशन बंद कर देगा. अनुवादक तब तक रद्द नहीं होगा, जब तक setCancelled(false) तक, इसे साफ़ तौर पर "रद्द नहीं किया गया" कर दिया जाता.

चेतावनी: इस एपीआई को फ़िलहाल आज़माया जा रहा है. इसमें बदलाव हो सकता है.

पैरामीटर
रद्द की गई सबसे सही तरीके से अनुमान रद्द करने के लिए true; फिर से शुरू करने के लिए false.
थ्रो
IllegalStateException अगर अनुवादक को रद्द किए जा सकने वाले विकल्प के साथ शुरू नहीं किया गया है, जो डिफ़ॉल्ट रूप से बंद रहता है.
यह भी देखें