2017-06-28 12 views
9

टेंसरफ्लो में, tf.layers और tf.contrib.layers बहुत सारी कार्यक्षमता साझा करें (मानक 2 डी संकल्पक परतें, बैच सामान्यीकरण परतें आदि)। क्या इन दोनों के बीच अंतर सिर्फ contrib.layers पैकेज अभी भी प्रयोगात्मक है जहां layers पैकेज स्थिर माना जाता है? या एक दूसरे द्वारा प्रतिस्थापित किया जा रहा है? अन्य मतभेद? ये दो अलग क्यों हैं?टेंसरफ्लो - tf.layers बनाम tf.contrib.layers

उत्तर

10

आपने अपने स्वयं के प्रश्न का उत्तर दिया है। tf.contrib नाम स्थान के लिए आधिकारिक दस्तावेज पर वर्णन है:

योगदान अस्थिर या प्रयोगात्मक कोड युक्त मॉड्यूल।

तो tf.contrib प्रायोगिक सुविधाओं के लिए आरक्षित है। इस नेमस्पेस में एपीआई को संस्करणों के बीच तेजी से बदलने की इजाजत है, जबकि अन्य आमतौर पर एक नए बड़े संस्करण के बिना नहीं कर सकते हैं। विशेष रूप से, tf.contrib.layers में फ़ंक्शंस tf.layers में पाए गए लोगों के समान नहीं हैं, हालांकि उनमें से कुछ को अलग-अलग नामों से दोहराया जा सकता है।

चाहे आप उनका उपयोग करना चाहते हैं, यह इस बात पर निर्भर करता है कि आप अचानक तोड़ने वाले बदलावों को संभालने के इच्छुक हैं या नहीं। कोड जो tf.contrib पर भरोसा नहीं करता है, टेंसरफ्लो के भविष्य के संस्करणों में माइग्रेट करना आसान हो सकता है।

+0

क्या कोई कारण है कि इन मॉड्यूल के बीच अधिकांश कार्यक्षमता डुप्लिकेट की गई है? क्या tf.contrib.layers में संस्करण, बेहतर अनुकूलन या कुछ के साथ प्रयोगात्मक संस्करण कहते हैं? या ऐतिहासिक कारणों से परत मॉड्यूल को टीएफ में जोड़ा जाने से पहले वे सिर्फ बचे हुए हैं? – erobertc

+1

@erobert जिसे केस-दर-मामले आधार पर मूल्यांकन किया जाना पड़ सकता है। अक्सर, 'tf.contrib' समुदाय को विभिन्न एपीआई के साथ प्रयोग करने और प्रक्रिया में कम स्थिर सुविधाओं का पर्दाफाश करने में सक्षम बनाता है। ऐसे में, उन्हें एक नई सुविधा भूमि के तुरंत बाद गायब होने की जरूरत नहीं है। इसी प्रकार, उन्हें एक मामूली रिलीज पर पूरी तरह से बदला या साफ किया जा सकता है। फिलहाल, उदाहरण के लिए, 'tf.layers.conv2d' और 'tf.contrib.layers.conv2d' में अलग-अलग प्रोटोटाइप हैं और हमेशा एक-दूसरे के अनुकूल नहीं होते हैं। –

संबंधित मुद्दे