ऑप एक क्रमबद्ध प्रोटोकॉल बफ़र्स संदेश से फ़ील्ड को टेंसर में निकालता है।
नोट: यह एपीआई मानव-मित्रता के बजाय रूढ़िवादिता के लिए डिज़ाइन किया गया है। इसका उपयोग इनपुट प्रोटोज़ को हाथ से पार्स करने के लिए किया जा सकता है, लेकिन यह जेनरेट किए गए कोड में उपयोग के लिए है।
`डीकोड_प्रोटो` ओपी एक क्रमबद्ध प्रोटोकॉल बफ़र्स संदेश से फ़ील्ड को टेंसर में निकालता है। यदि संभव हो तो `फ़ील्ड_नाम` में फ़ील्ड को डीकोड किया जाता है और संबंधित `आउटपुट_टाइप्स` में परिवर्तित किया जाता है।
फ़ील्ड नामों का संदर्भ देने के लिए एक `message_type` नाम प्रदान किया जाना चाहिए। वास्तविक संदेश डिस्क्रिप्टर को या तो लिंक-इन डिस्क्रिप्टर पूल में या `descriptor_source` विशेषता का उपयोग करके कॉलर द्वारा प्रदान किए गए फ़ाइल नाम में देखा जा सकता है।
प्रत्येक आउटपुट टेंसर एक सघन टेंसर है। इसका मतलब यह है कि यह इनपुट मिनीबैच में देखे गए दोहराए गए तत्वों की सबसे बड़ी संख्या को रखने के लिए गद्देदार है। (शून्य आकार के आयामों को रोकने के लिए आकार को एक-एक करके गद्देदार भी बनाया गया है)। मिनीबैच में प्रत्येक उदाहरण के लिए वास्तविक दोहराव गणना `आकार` आउटपुट में पाई जा सकती है। कई मामलों में `decode_proto` का आउटपुट तुरंत tf.squeeze में फीड कर दिया जाता है यदि गुम मान कोई चिंता का विषय नहीं है। tf.squeeze का उपयोग करते समय, आश्चर्य से बचने के लिए हमेशा स्क्वीज़ आयाम को स्पष्ट रूप से पास करें।
अधिकांश भाग के लिए, प्रोटो फ़ील्ड प्रकार और TensorFlow dtypes के बीच मैपिंग सीधी है। हालाँकि, कुछ विशेष मामले हैं:
- एक प्रोटो फ़ील्ड जिसमें एक उपसंदेश या समूह होता है, उसे केवल `DT_STRING` (क्रमबद्ध उपसंदेश) में परिवर्तित किया जा सकता है। यह एपीआई की जटिलता को कम करने के लिए है। परिणामी स्ट्रिंग को डिकोड_प्रोटो ऑप के किसी अन्य उदाहरण में इनपुट के रूप में उपयोग किया जा सकता है।
- TensorFlow में अहस्ताक्षरित पूर्णांकों के लिए समर्थन का अभाव है। ऑप्स समान दो-पूरक बिट पैटर्न (स्पष्ट तरीके) के साथ uint64 प्रकारों को `DT_INT64` के रूप में दर्शाते हैं। अहस्ताक्षरित int32 मानों को `DT_INT64` प्रकार निर्दिष्ट करके, या यदि कॉलर `output_types` विशेषता में `DT_INT32` निर्दिष्ट करता है, तो twos-complement का उपयोग करके सटीक रूप से दर्शाया जा सकता है।
- `मानचित्र` फ़ील्ड सीधे डिकोड नहीं किए जाते हैं। उन्हें उपयुक्त प्रविष्टि प्रकार के `दोहराए गए' फ़ील्ड के रूप में माना जाता है। प्रोटो-कंपाइलर प्रत्येक मानचित्र फ़ील्ड के लिए प्रविष्टि प्रकारों को परिभाषित करता है। टाइप-नाम फ़ील्ड नाम है, जिसे "एंट्री" जोड़कर "कैमलकेस" में बदल दिया गया है। tf.train.Features.FeatureEntry
संदेश इन अंतर्निहित `एंट्री` प्रकारों में से एक का एक उदाहरण है।
- `एनम` फ़ील्ड को int32 के रूप में पढ़ा जाना चाहिए।
बाइनरी और टेक्स्ट प्रोटो क्रमांकन दोनों समर्थित हैं, और इन्हें 'प्रारूप' विशेषता का उपयोग करके चुना जा सकता है।
`descriptor_source` विशेषता `message_type` को देखते समय परामर्श के लिए प्रोटोकॉल डिस्क्रिप्टर के स्रोत का चयन करती है। यह हो सकता है:
- एक खाली स्ट्रिंग या "स्थानीय: //", जिस स्थिति में प्रोटोकॉल डिस्क्रिप्टर बाइनरी से जुड़े C++ (पायथन नहीं) प्रोटो परिभाषाओं के लिए बनाए जाते हैं।
- एक फ़ाइल, जिस स्थिति में प्रोटोकॉल डिस्क्रिप्टर फ़ाइल से बनाए जाते हैं, जिसमें एक स्ट्रिंग के रूप में क्रमबद्ध `फ़ाइलडिस्क्रिप्टरसेट` शामिल होने की उम्मीद है। ध्यान दें: आप प्रोटोकॉल कंपाइलर `protoc` में `--descriptor_set_out` और `--include_imports` विकल्पों का उपयोग करके `descriptor_source` फ़ाइल बना सकते हैं।
- ए "बाइट्स://
नेस्टेड क्लासेस
कक्षा | डिकोडप्रोटो.विकल्प | DecodeProto के लिए वैकल्पिक विशेषताएँ |
सार्वजनिक तरीके
स्थैतिक डिकोडप्रोटो | |
स्थिर डिकोडप्रोटो.विकल्प | डिस्क्रिप्टरसोर्स (स्ट्रिंग डिस्क्रिप्टरसोर्स) |
स्थिर डिकोडप्रोटो.विकल्प | संदेश प्रारूप (स्ट्रिंग संदेश प्रारूप) |
स्थिर डिकोडप्रोटो.विकल्प | सेनिटाइज़ (बूलियन सेनिटाइज़) |
आउटपुट <पूर्णांक> | आकार () `[batch_shape, len(field_names)]` आकार के साथ int32 का टेंसर। |
सूची< आउटपुट <?>> | मान () संबंधित फ़ील्ड के लिए मान वाले टेंसरों की सूची। |
विरासत में मिली विधियाँ
सार्वजनिक तरीके
सार्वजनिक स्थैतिक डिकोडप्रोटो बनाएं ( स्कोप स्कोप, ऑपरेंड <स्ट्रिंग> बाइट्स, स्ट्रिंग संदेश प्रकार, सूची <स्ट्रिंग> फ़ील्ड नाम, सूची <वर्ग <?>> आउटपुट प्रकार, विकल्प... विकल्प)
एक नए DecodeProto ऑपरेशन को लपेटकर एक क्लास बनाने की फ़ैक्टरी विधि।
पैरामीटर
दायरा | वर्तमान दायरा |
---|---|
बाइट्स | `बैच_शेप` आकार के साथ क्रमबद्ध प्रोटो का टेंसर। |
संदेश प्रकार | डिकोड करने के लिए प्रोटो संदेश प्रकार का नाम. |
फ़ील्डनाम | प्रोटो फ़ील्ड नामों वाली स्ट्रिंग्स की सूची। किसी एक्सटेंशन फ़ील्ड को उसके पूरे नाम का उपयोग करके डिकोड किया जा सकता है, उदाहरण के लिए EXT_PACKAGE.EXT_FIELD_NAME। |
आउटपुट प्रकार | field_names में संबंधित फ़ील्ड के लिए उपयोग करने के लिए TF प्रकारों की सूची। |
विकल्प | वैकल्पिक गुण मान रखता है |
रिटर्न
- DecodeProto का एक नया उदाहरण
सार्वजनिक स्थैतिक DecodeProto.Options डिस्क्रिप्टरसोर्स (स्ट्रिंग डिस्क्रिप्टरसोर्स)
पैरामीटर
वर्णनकर्तास्रोत | या तो विशेष मान `local://` या क्रमबद्ध `FileDescriptorSet` वाली फ़ाइल का पथ। |
---|
सार्वजनिक स्थैतिक DecodeProto.Options messageFormat (स्ट्रिंग messageFormat)
पैरामीटर
संदेश प्रारूप | या तो `बाइनरी` या text । |
---|
सार्वजनिक स्थैतिक DecodeProto.Options सैनिटाइज़ (बूलियन सैनिटाइज़)
पैरामीटर
स्वच्छ | रिजल्ट को सैनिटाइज करना है या नहीं. |
---|
सार्वजनिक आउटपुट <पूर्णांक> आकार ()
`[batch_shape, len(field_names)]` आकार के साथ int32 का टेंसर। प्रत्येक प्रविष्टि संबंधित फ़ील्ड के लिए पाए गए मानों की संख्या है। वैकल्पिक फ़ील्ड में 0 या 1 मान हो सकते हैं.
सार्वजनिक सूची < आउटपुट <?>> मान ()
संबंधित फ़ील्ड के लिए मान वाले टेंसरों की सूची। `values[i]` में डेटाटाइप `output_types[i]` और आकार `[batch_shape, max(sizes[...,i])]` है।