इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

TF1 हब प्रारूप

TensorFlow 1 कार्यक्रमों में आयात के लिए TF1 हब प्रारूप: 2018 में अपनी शुरुआत के समय इन TensorFlow हब संपत्ति का एक ही प्रकार की पेशकश की।

यह पृष्ठ कैसे साथ TF1 में TF1 हब प्रारूप (या TF2 की TF1 संगतता मोड) का उपयोग कैसे करें hub.Module वर्ग और संबद्ध एपीआई। (सामान्य उपयोग के एक निर्माण करने के लिए है tf.Graph , संभवतः एक TF1 अंदर Estimator , साथ TF1 हब प्रारूप में एक या अधिक मॉडल के संयोजन के द्वारा tf.compat.layers या tf.layers )।

TensorFlow 2 (बाहर TF1 संगतता मोड) के उपयोगकर्ताओं का उपयोग करना चाहिए के साथ नए एपीआई hub.load() या hub.KerasLayer । नई एपीआई भार नई TF2 SavedModel संपत्ति प्रकार के, लेकिन यह भी सीमित है TF2 में लोड हो रहा है TF1 हब प्रारूप के लिए समर्थन

TF1 हब प्रारूप में एक मॉडल का उपयोग

TF1 हब प्रारूप में एक मॉडल instantiating

TF1 हब प्रारूप में एक मॉडल एक बनाने के द्वारा एक TensorFlow कार्यक्रम में आयात किया जाता hub.Module इसके URL या जैसे फाइल सिस्टम पथ, के साथ एक स्ट्रिंग से वस्तु:

 m = hub.Module("path/to/a/module_dir")
 

यह वर्तमान TensorFlow ग्राफ के लिए मॉड्यूल के चर कहते हैं। उनके initializers चल रहा है डिस्क से उनके पूर्व प्रशिक्षित मूल्यों पढ़ा जाएगा। इसी तरह, टेबल और अन्य राज्य ग्राफ में जोड़ा जाता है।

कैशिंग मॉड्यूल

जब किसी URL से एक मॉड्यूल बनाने, मॉड्यूल सामग्री डाउनलोड किया है और स्थानीय सिस्टम अस्थायी निर्देशिका में कैश किया गया है। स्थान जहां मॉड्यूल कैश नहीं किया जाता का उपयोग कर अधिरोहित जा सकता है TFHUB_CACHE_DIR वातावरण चर। जानकारी के लिए, कैशिंग

एक मॉड्यूल को लागू करने

एक बार जब instantiated, एक मॉड्यूल m शून्य या अधिक बार टेन्सर आउटपुट से टेन्सर आदानों से एक अजगर समारोह की तरह कहा जा सकता है:

 y = m(x)
 

प्रत्येक कॉल गणना करने के लिए वर्तमान TensorFlow ग्राफ को संचालन कहते हैं y से x । इस प्रशिक्षित वजन के साथ चर शामिल है, इन सभी अनुप्रयोगों के बीच साझा कर रहे हैं।

मॉड्यूल आदेश अनुमति देने के लिए कई नामित हस्ताक्षर परिभाषित कर सकते हैं एक से अधिक तरीके (कैसे पायथन वस्तुओं तरीकों के समान) में लागू किया जा रहा। एक मॉड्यूल के दस्तावेज़ उपलब्ध हस्ताक्षर वर्णन करना चाहिए। कॉल ऊपर हस्ताक्षर नामित लागू होता है "default" । किसी भी हस्ताक्षर वैकल्पिक के लिए इसका नाम गुजर द्वारा चुना जा सकता signature= तर्क।

एक हस्ताक्षर एकाधिक आदानों है, तो वे, एक dict के रूप में पारित किया जाना चाहिए कुंजी हस्ताक्षर द्वारा परिभाषित किया गया है। इसी तरह, अगर एक हस्ताक्षर एकाधिक आउटपुट है, इन एक dict के रूप में पारित करने के द्वारा प्राप्त किया जा सकता है as_dict=True , कुंजी हस्ताक्षर द्वारा परिभाषित के तहत (कुंजी "default" लौटे यदि एकल उत्पादन के लिए है as_dict=False )। तो जैसे एक मॉड्यूल दिखता लागू करने का सबसे सामान्य रूप:

 outputs = m(dict(apples=x1, oranges=x2), signature="fruit_to_pet", as_dict=True)
y1 = outputs["cats"]
y2 = outputs["dogs"]
 

एक फोन करने वाले सभी आदानों एक हस्ताक्षर द्वारा परिभाषित की आपूर्ति करनी होगी, लेकिन वहाँ एक मॉड्यूल के आउटपुट के सभी उपयोग करने के लिए कोई आवश्यकता नहीं है। TensorFlow केवल मॉड्यूल में एक लक्ष्य की निर्भरता के रूप में अंत के उन हिस्सों चलेंगे tf.Session.run() दरअसल, मॉड्यूल प्रकाशकों उन्नत का उपयोग करता है मुख्य outputs के साथ (मध्यवर्ती परतों के सक्रियण की तरह) के लिए विभिन्न आउटपुट प्रदान करने के लिए चुन सकते हैं। मॉड्यूल उपभोक्ताओं अतिरिक्त आउटपुट शान से संभाल चाहिए।

वैकल्पिक मॉड्यूल बाहर की कोशिश कर रहा

जब कभी भी एक ही काम के लिए कई मॉड्यूल हैं, TensorFlow हब उन्हें संगत signartures (इंटरफेस) ऐसा है कि अलग अलग लोगों की कोशिश कर रहा एक स्ट्रिंग-मान hyperparameter के रूप में मॉड्यूल संभाल अलग उतना ही आसान है के साथ लैस करने के लिए प्रोत्साहित करती है।

यह अंत करने के लिए, हम सिफारिश का एक संग्रह को बनाए रखने के आम हस्ताक्षर लोकप्रिय कार्यों के लिए।

एक नए मॉड्यूल का निर्माण

संगतता टिप्पणी

TF1 हब प्रारूप TensorFlow 1. की दिशा में सक्षम है यह केवल आंशिक रूप से TensorFlow 2 में TF हब के द्वारा समर्थित है कृपया नई में प्रकाशित करने पर विचार करते हैं TF2 SavedModel बजाय प्रारूप।

TF1 हब प्रारूप एक वाक्यात्मक स्तर पर TensorFlow 1 की SavedModel प्रारूप के समान (एक ही फाइल नाम और प्रोटोकॉल संदेशों), लेकिन है शब्दार्थ मॉड्यूल पुन: उपयोग, संरचना और पुन: प्रशिक्षण (जैसे, संसाधन initializers के विभिन्न भंडारण, अलग टैगिंग के लिए अनुमति देने के लिए विभिन्न metagraphs के लिए सम्मेलनों)। सबसे आसान तरीका उन्हें डिस्क पर अलग से बताने की उपस्थिति या का अभाव है tfhub_module.pb फ़ाइल।

सामान्य पहूंच

एक नए मॉड्यूल को परिभाषित करने के लिए, एक प्रकाशक कॉल hub.create_module_spec() एक समारोह के साथ module_fn । यह फ़ंक्शन ग्राफ मॉड्यूल की आंतरिक संरचना का प्रतिनिधित्व करने का निर्माण, का उपयोग कर tf.placeholder() के लिए आदानों फोन करने वाले के द्वारा आपूर्ति किया जाना है। तो फिर यह फोन करके हस्ताक्षर को परिभाषित करता है hub.add_signature(name, inputs, outputs) एक या अधिक बार।

उदाहरण के लिए:

 def module_fn():
  inputs = tf.placeholder(dtype=tf.float32, shape=[None, 50])
  layer1 = tf.layers.dense(inputs, 200)
  layer2 = tf.layers.dense(layer1, 100)
  outputs = dict(default=layer2, hidden_activations=layer1)
  # Add default signature.
  hub.add_signature(inputs=inputs, outputs=outputs)

...
spec = hub.create_module_spec(module_fn)
 

का परिणाम hub.create_module_spec() , इस्तेमाल किया जा सकता एक पथ के बजाय एक विशेष TensorFlow ग्राफ भीतर एक मॉड्यूल वस्तु का दृष्टांत के लिए। ऐसे मामले में, वहाँ कोई चौकी है, और मॉड्यूल उदाहरण चर initializers बजाय का उपयोग करेगा।

किसी भी मॉड्यूल उदाहरण, अपना के माध्यम से डिस्क पर श्रृंखलाबद्ध किया जा सकता है export(path, session) विधि। एक मॉड्यूल निर्यात वर्तमान में अपने चर के राज्य के साथ अपनी परिभाषा एक साथ serializes session से पारित कर दिया पथ में। यह जब पहली बार के लिए एक मॉड्यूल का निर्यात किया जा सकता है, साथ ही जब एक ठीक देखते मॉड्यूल के निर्यात के रूप में।

TensorFlow आकलनकर्ता के साथ संगतता के लिए, hub.LatestModuleExporter निर्यात मॉड्यूल नवीनतम चौकी से, जैसे tf.estimator.LatestExporter नवीनतम चौकी से पूरे मॉडल निर्यात करता है।

मॉड्यूल प्रकाशकों एक को लागू करना चाहिए आम हस्ताक्षर जब संभव हो, ताकि उपभोक्ताओं को आसानी से मॉड्यूल का आदान-प्रदान और उनकी समस्या के लिए सबसे अच्छा मिल सकता है।

रियल उदाहरण

हमारे पर एक नजर डालें मॉड्यूल निर्यातक embedding पाठ कैसे एक आम पाठ embedding प्रारूप से एक मॉड्यूल बनाने के लिए की एक वास्तविक दुनिया उदाहरण के लिए।

फ़ाइन ट्यूनिंग

इसके चारों ओर मॉडल के लोगों के साथ एक आयातित मॉड्यूल एक साथ की चर प्रशिक्षण ठीक करने कहा जाता है। ठीक ट्यूनिंग बेहतर गुणवत्ता में परिणाम है, लेकिन नई जटिलताओं कहते हैं कर सकते हैं। हम उपभोक्ताओं को सलाह देने के लिए केवल सरल गुणवत्ता में तोड़ मरोड़ की खोज के बाद ठीक करने में देखना, और मॉड्यूल प्रकाशक यह सिफारिश की गई है केवल यदि।

उपभोक्ताओं के लिए

ठीक करने को सक्षम करने के साथ मॉड्यूल का दृष्टांत hub.Module(..., trainable=True) आयात TensorFlow के अपने चर trainable बनाने के लिए और करने के लिए REGULARIZATION_LOSSES । मॉड्यूल एकाधिक ग्राफ वेरिएंट है, प्रशिक्षण के लिए एक उचित लेने के लिए सुनिश्चित करें। आमतौर पर, कि टैग के साथ एक है {"train"}

एक प्रशिक्षण व्यवस्था है कि पूर्व प्रशिक्षित वजन को बर्बाद नहीं करता है, उदाहरण के लिए, खरोंच से प्रशिक्षण के लिए की तुलना में कम सीखने दर का चयन करें।

प्रकाशकों के लिए

ठीक करने के लिए उपभोक्ताओं के लिए आसान बनाने के लिए, कृपया निम्न में सचेत रहें:

  • ठीक ट्यूनिंग नियमितीकरण की जरूरत है। आपका मॉड्यूल के साथ निर्यात किया जाता है REGULARIZATION_LOSSES संग्रह है, जो अपनी पसंद डालता है tf.layers.dense(..., kernel_regularizer=...) क्या उपभोक्ता से हो जाता है में आदि tf.losses.get_regularization_losses() । एल 1 / एल 2 नियमितीकरण घाटे को परिभाषित करने के इस तरह से पसंद करते हैं।

  • प्रकाशक मॉडल में, से बचने के माध्यम से एल 1 / एल 2 नियमितीकरण को परिभाषित करने l1_ और l2_regularization_strength के मापदंडों tf.train.FtrlOptimizer , tf.train.ProximalGradientDescentOptimizer , और अन्य समीपस्थ अनुकूलक। इन मॉड्यूल के साथ-साथ निर्यात नहीं कर रहे हैं, और सेटिंग नियमितीकरण ताकत विश्व स्तर पर उपभोक्ता के लिए उपयुक्त नहीं हो सकता। विस्तृत में एल 1 नियमितीकरण के लिए छोड़कर (यानी विरल रैखिक) या वाइड और गहरी मॉडल, यह बजाय व्यक्तिगत नियमितीकरण नुकसान का उपयोग करना संभव होना चाहिए।

  • आप छोड़ने वालों, बैच सामान्य, या इसी तरह प्रशिक्षण तकनीकों का उपयोग करते हैं, मूल्यों के प्रति अपनी hyperparameters सेट है कि कई उम्मीद का उपयोग करता है के पार बना भावना। छोड़ने वालों की दर overfitting को लक्ष्य समस्या की प्रवृत्ति के लिए समायोजित किया जा सकता है। बैच सामान्य में, गति (उर्फ क्षय गुणांक) छोटे डेटासेट और / या बड़े बैचों के साथ ठीक करने को सक्षम करने के लिए छोटे पर्याप्त होना चाहिए। उन्नत उपभोक्ताओं के लिए, एक हस्ताक्षर है कि उजागर critcial hyperparameters पर नियंत्रण जोड़ने पर विचार करें।