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