Tensorflow `tf.train.Optimizer` कंप्यूटर्स को कैसे व्यवस्थित करता है?


10

मैं Tensorflow mnist ट्यूटोरियल ( https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/mnist/mnist_softetaxax.py ) का अनुसरण कर रहा हूं ।

ट्यूटोरियल tf.train.Optimizer.minimize(विशेष रूप से tf.train.GradientDescentOptimizer) का उपयोग करता है । मुझे ग्रेडिएंट्स को परिभाषित करने के लिए कहीं भी कोई तर्क नहीं दिया जा रहा है।

क्या डिफ़ॉल्ट रूप से संख्यात्मक विभेदन का उपयोग कर सेंसर प्रवाह है?

क्या आप के साथ ग्रेडिएंट्स में पास होने का एक तरीका है scipy.optimize.minimize?

जवाबों:


16

यह संख्यात्मक भेदभाव नहीं है, यह स्वचालित भेदभाव है । यह टेंसोफ़्लो के अस्तित्व के मुख्य कारणों में से एक है: एक टेंसरफ़्लो ग्राफ में संचालन निर्दिष्ट करके ( Tensorएस और इतने पर संचालन के साथ ), यह स्वचालित रूप से ग्राफ़ के माध्यम से श्रृंखला नियम का पालन कर सकता है और, क्योंकि यह प्रत्येक व्यक्तिगत ऑपरेशन के डेरिवेटिव को जानता है। निर्दिष्ट करें, यह उन्हें स्वचालित रूप से संयोजित कर सकता है।

यदि किसी कारण से आप उस टुकड़े को ओवरराइड करना चाहते हैं, तो यह संभव है gradient_override_map


संख्यात्मक भिन्नता का उपयोग कर स्वचालित भेदभाव नहीं है?
एरिन

@ NYOR नं; उपरोक्त विकिपीडिया लिंक देखें। वास्तव में "वास्तविक" रिवर्स-मोड ऑटोडिफ़ और प्रतीकात्मक भेदभाव के बीच टेंसरफ़्लो क्या होता है।
डगल

@ डगल इम में बिना किसी ग्राफ, नो tf.function डेकोरेटर के साथ उत्सुक मोड का उपयोग करते हुए, ऑटो भेदभाव को दसियों के साथ संबंध कैसे पता चलता है?
१०:

1
@datdinhquoc यह एक ही मौलिक एल्गोरिथ्म है, बस एक कार्यान्वयन के लिए थोड़ा और अधिक जटिल है।
डगल

9

यह स्वचालित भेदभाव का उपयोग करता है। जहां यह चेन रूल का उपयोग करता है और ग्रेफाइंग ग्रेडिएंट्स ग्राफ में बैकवर्ड जाता है।

मान लें कि हमारे पास एक टेंसर सी है यह टेंसर सी ऑपरेशन की श्रृंखला के बाद बना है आइए कहते हैं कि जोड़कर, गुणा करके, कुछ ग़ैरबराबरी से गुजर रहे हैं आदि।

इसलिए यदि यह C, Xk नामक कुछ टेनर्स के सेट पर निर्भर करता है, तो हमें ग्रेडिएंट प्राप्त करने की आवश्यकता है

Tensorflow हमेशा संचालन के मार्ग को ट्रैक करती है। मेरा मतलब है कि नोड्स के अनुक्रमिक व्यवहार और उनके बीच डेटा प्रवाह कैसे होता है। वह ग्राफ द्वारा किया जाता है यहां छवि विवरण दर्ज करें

अगर हमें लागत wrt X इनपुट के व्युत्पन्न प्राप्त करने की आवश्यकता है, तो यह पहला काम क्या करेगा, क्या यह ग्राफ़ का विस्तार करके एक्स-इनपुट से लागत तक का रास्ता लोड करता है।

फिर यह नदियों के क्रम में शुरू होता है। फिर श्रृंखला शासन के साथ ग्रेडिएंट वितरित करें। (बैकप्रॉपैजेशन के रूप में भी)

यदि आप स्रोत कोड पढ़ते हैं तो कोई भी तरीका tf.gradients () से संबंधित है, तो आप पा सकते हैं कि टेंसरफ़्लो ने इस ढाल वितरण भाग को एक अच्छे तरीके से किया है।

जबकि ग्राफ के साथ tf इंटरैक्ट करते समय, बैकवर्ड पास में TF अलग-अलग नोड्स को पूरा करेगा। इन नोड्स के अंदर ऐसे ऑपरेशन होते हैं जिन्हें हम (ops) matmal, softmax, relu, batch_normalization आदि कहते हैं। इसलिए हम जो करते हैं वह स्वतः ही इन ops को इन में लोड कर देता है। ग्राफ

यह नया नोड संचालन के आंशिक व्युत्पन्न की रचना करता है। get_gradient ()

आइए इन नए जोड़े गए नोड्स के बारे में थोड़ा बात करें

इन नोड्स के अंदर हम 2 चीजें जोड़ते हैं। व्युत्पन्न हमने गणना की ealier) 2. आगे के पास में उत्पीड़न उत्पीड़न के इनपुट के बारे में भी बताएं।

तो चेन नियम से हम गणना कर सकते हैं

तो यह एक बैकवर्ड एपीआई की तरह ही है

तो स्वचालित रूप से भेदभाव करने के लिए टेंसरफ़्लो हमेशा ग्राफ़ के क्रम के बारे में सोचते हैं

तो जैसा कि हम जानते हैं कि हमें ग्रेडिएंट्स की गणना करने के लिए फॉरवर्ड पास वैरिएबल की आवश्यकता है तो हमें इंटरमिडिएट वैल्यूज़ को भी टेनसर्स में स्टोर करने की आवश्यकता है, इससे मेमोरी कम हो सकती है।


1
कोई ग्राफ, कोई tf.function डेकोरेटर के साथ उत्सुक मोड का उपयोग करके im, ऑटो भेदभाव को टेंसर्स के बीच संबंध कैसे पता चलता है?
डेटादिहॉक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.