TensorLabel, TensorBuffers के लिए इस्तेमाल किया जाने वाला रैपर है. ऐक्सिस पर इसके लेबल के साथ काम के लेबल होते हैं.
उदाहरण के लिए, इमेज क्लासिफ़िकेशन मॉडल में {1, 10} आकार वाला आउटपुट टेंसर हो सकता है. इसमें 1, बैच साइज़ और 10 कैटगरी की संख्या है. असल में, दूसरे ऐक्सिस पर हम हर सब-टेंसर को
हर कैटगरी के नाम या जानकारी के साथ लेबल कर सकते हैं. TensorLabel
की मदद से, TensorBuffer
में मौजूद सादे टेन्सर को पहले से तय लेबल से सब-टेन्सर में बदलकर मैप किया जा सकता है. इस मामले में, अगर दूसरे ऐक्सिस के लिए 10 लेबल दिए जाते हैं, तो TensorLabel
मूल {1, 10} Tensor को 10 एलिमेंट मैप में बदल सकता है, जिसमें से हर वैल्यू
Tensor के आकार {} (स्केलर) में होगी. इस्तेमाल का उदाहरण:
TensorBuffer outputTensor = ...; List<String> labels = FileUtil.loadLabels(context, labelFilePath); // labels the first axis with size greater than one TensorLabel labeled = new TensorLabel(labels, outputTensor); // If each sub-tensor has effectively size 1, we can directly get a float value Map<String, Float> probabilities = labeled.getMapWithFloatValue(); // Or get sub-tensors, when each sub-tensor has elements more than 1 Map<String, TensorBuffer> subTensors = labeled.getMapWithTensorBuffer();
ध्यान दें: फ़िलहाल, हम सिर्फ़ ऐसे पहले लेबल के लिए टेंसर-टू-मैप कन्वर्ज़न की सुविधा देते हैं जिसका साइज़ एक से ज़्यादा है.
पब्लिक कंस्ट्रक्टर
TensorLabel(Maps<Integer, List<String>> ऐक्सिसLabels, TensorBuffer TensorBuffer)
यह ऐसा TensorLabel ऑब्जेक्ट बनाता है जो कई डाइमेंशन वाले टेंसर के ऐक्सिस पर लेबल कर सकता है.
|
|
TensorLabel(List<String> xiLabels, TensorBuffer tensorBuffer)
ऐसा TensorLabel ऑब्जेक्ट बनाता है जो कई डाइमेंशन वाले टेन्सर के एक ऐक्सिस पर लेबल कर सकता है.
|
सार्वजनिक तरीके
List<Category> |
getCategoryList()
TensorLabel ऑब्जेक्ट से Category की सूची लेता है. |
Map<String, Float> |
getMapWithFloatValue()
ऐसा मैप लेता है जिससे लेबल को फ़्लोट करने के लिए मैप किया जाता है.
|
Map<String, TensorBuffer> |
getMapWithTensorBuffer()
लेबल के जोड़े और TensorBuffer के साथ मैप दिखाता है.
|
इनहेरिट किए गए तरीके
पब्लिक कंस्ट्रक्टर
सार्वजनिक TensorLabel (मैप<इंटीजर, सूची<स्ट्रिंग>> ऐक्सिसलेबल, TensorBuffer tensorBuffer)
यह ऐसा TensorLabel ऑब्जेक्ट बनाता है जो कई डाइमेंशन वाले टेंसर के ऐक्सिस पर लेबल कर सकता है.
पैरामीटर
axisLabels | वह मैप, जिसका ऐक्सिस आईडी (0 से शुरू होने वाला) होता है और वैल्यू उसके हिसाब से लेबल होती है. ध्यान दें: लेबल का साइज़, उस ऐक्सिस पर मौजूद टेंसर के साइज़ के बराबर होना चाहिए. |
---|---|
tensorBuffer | लेबल किया जाने वाला TensorBuffer. |
थ्रो
NullPointerException | अगर axisLabels या tensorBuffer शून्य है या axisLabels में कोई वैल्यू
शून्य है. |
---|---|
IllegalArgumentException | अगर axisLabels में मौजूद कोई कुंजी रेंज से बाहर है (tensorBuffer के आकार की तुलना में या किसी वैल्यू (लेबल) का साइज़, दिए गए डाइमेंशन में tensorBuffer के साथ अलग है.
|
सार्वजनिक TensorLabel (सूची<स्ट्रिंग> ऐक्सिसलेबल, TensorBuffer tensorBuffer)
ऐसा TensorLabel ऑब्जेक्ट बनाता है जो कई डाइमेंशन वाले टेन्सर के एक ऐक्सिस पर लेबल कर सकता है.
ध्यान दें: लेबल, उस पहले ऐक्सिस पर लागू किए जाते हैं जिसका साइज़ 1 से ज़्यादा होता है. उदाहरण के लिए, अगर
टेंसर का आकार [1, 10, 3] है, तो लेबल ऐक्सिस 1 (0 से शुरू होने वाले आईडी) पर लागू किए जाएंगे. साथ ही, axisLabels
का साइज़ भी 10 होना चाहिए.
पैरामीटर
axisLabels | लेबल की ऐसी सूची जिसका साइज़, लेबल किए जाने वाले ऐक्सिस पर मौजूद टेंसर के साइज़ के बराबर होना चाहिए. |
---|---|
tensorBuffer | लेबल किया जाने वाला TensorBuffer. |
सार्वजनिक तरीके
सार्वजनिक सूची<Category> getCategoryList ()
TensorLabel
ऑब्जेक्ट से Category
की सूची लेता है.
लेबल का ऐक्सिस, असरदार तरीके से आखिरी ऐक्सिस होना चाहिए (इसका मतलब है कि इस ऐक्सिस से
बताए गए हर सब टेंसर का साइज़ 1 होना चाहिए), ताकि लेबल किए गए हर सब टेंसर को फ़्लोट वैल्यू स्कोर में बदला जा सके. उदाहरण: {2, 5, 3}
और ऐक्सिस 2 वाला TensorLabel
मान्य होता है. अगर ऐक्सिस 1 या 0 है, तो इसे Category
में नहीं बदला जा सकता.
getMapWithFloatValue()
एक विकल्प है, लेकिन नतीजे के तौर पर Map
दिखाता है.
थ्रो
IllegalStateException | अगर हर लेबल पर सब टेंसर का साइज़ 1 नहीं है. |
---|
सार्वजनिक मैप<स्ट्रिंग, फ़्लोट> getMapWithFloatValue ()
ऐसा मैप लेता है जिससे लेबल को फ़्लोट करने के लिए मैप किया जाता है. सिर्फ़ उस पहले ऐक्सिस पर मैपिंग की अनुमति दें जिसका साइज़ एक से ज़्यादा हो. साथ ही, ऐक्सिस सिर्फ़ आखिरी ऐक्सिस होना चाहिए (इसका मतलब है कि इस ऐक्सिस से जुड़े हर सब टेंसर का साइज़ 1 होना चाहिए).
नतीजा पाने के लिए, getCategoryList()
एक वैकल्पिक एपीआई है.
थ्रो
IllegalStateException | अगर हर लेबल पर सब टेंसर का साइज़ 1 नहीं है. |
---|
सार्वजनिक मैप<स्ट्रिंग, TensorBuffer> getMapWithTensorBuffer ()
लेबल के जोड़े और TensorBuffer के साथ मैप दिखाता है. सिर्फ़ ऐसे पहले ऐक्सिस पर मैपिंग की अनुमति दें जिसका साइज़ एक से ज़्यादा हो.