TensorFlow ट्यूटोरियल - TensorFlow का उपयोग कर डीप लर्निंग



TensorFlow ट्यूटोरियल श्रृंखला का तीसरा ब्लॉग है। इसमें TensorFlow की सभी मूल बातें शामिल हैं। यह एक सरल रैखिक मॉडल बनाने के तरीके के बारे में भी बात करता है।

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

  • TensorFlow क्या है
  • TensorFlow कोड मूल बातें
  • TensorFlow UseCase

सेंसर क्या हैं?

इस TensorFlow ट्यूटोरियल में, TensorFlow के बारे में बात करने से पहले, हमें पहले समझें दसियों क्या हैं । गहन सीखने में डेटा का प्रतिनिधित्व करने के लिए सेंसर कुछ और नहीं बल्कि एक वास्तविक तथ्य है।





Tensors - TensorFlow Tutorial - एडुर्काजैसा कि ऊपर की छवि में दिखाया गया है, टेंसर्स सिर्फ बहुआयामी सरणियाँ हैं, जो आपको उच्च आयाम वाले डेटा का प्रतिनिधित्व करने की अनुमति देता है। सामान्य तौर पर, डीप लर्निंग आप उच्च आयामी डेटा सेट से निपटते हैं जहां आयाम डेटा सेट में मौजूद विभिन्न विशेषताओं को संदर्भित करते हैं। वास्तव में, 'TensorFlow' नाम उन ऑपरेशनों से लिया गया है, जो तंत्रिका नेटवर्क दसियों पर प्रदर्शन करते हैं। यह सचमुच दसियों का प्रवाह है। चूंकि, आप समझ गए हैं कि टेंसर्स क्या हैं, आइए हम इस TensorFlow ट्यूटोरियल में आगे बढ़ते हैं और समझते हैं - TensorFlow क्या है?

TensorFlow क्या है?

TensorFlow Python पर आधारित एक पुस्तकालय है जो डीप लर्निंग मॉडल को लागू करने के लिए विभिन्न प्रकार की कार्यक्षमता प्रदान करता है। जैसा कि पहले चर्चा की गई है, टेन्सरफ्लो शब्द दो शब्दों से बना है - टेन्सर और फ्लो:



TensorFlow में, टेंसर शब्द का अर्थ डेटा के बहुआयामी सरणी के रूप में प्रतिनिधित्व है, जबकि शब्द प्रवाह उन संचालन की श्रृंखला को संदर्भित करता है जो एक टेनर्स पर प्रदर्शन करता है जैसा कि ऊपर की छवि में दिखाया गया है।

अब हमने TensorFlow के बारे में पर्याप्त पृष्ठभूमि को कवर कर लिया है।



अगला, इस TensorFlow ट्यूटोरियल में हम TensorFlow कोड-बेसिक्स के बारे में चर्चा करेंगे।

TensorFlow ट्यूटोरियल: कोड मूल बातें

मूल रूप से, TensorFlow कार्यक्रम लिखने की समग्र प्रक्रिया में दो चरण शामिल हैं:

  1. एक कम्प्यूटेशनल ग्राफ का निर्माण
  2. एक कम्प्यूटेशनल ग्राफ चल रहा है

मैं आपको उपरोक्त दो चरण एक-एक करके समझाता हूं:

1. कम्प्यूटेशनल ग्राफ का निर्माण

इसलिए, कम्प्यूटेशनल ग्राफ क्या है? खैर, एक कम्प्यूटेशनल ग्राफ TensorFlow संचालन की एक श्रृंखला है जिसे ग्राफ़ में नोड के रूप में व्यवस्थित किया गया है। प्रत्येक नोड इनपुट के रूप में 0 या अधिक टेंसरों को लेता है और आउटपुट के रूप में एक टेंसर का उत्पादन करता है। मैं आपको एक सरल कम्प्यूटेशनल ग्राफ का उदाहरण देता हूं जिसमें तीन नोड होते हैं - सेवा मेरे , बी और सी जैसा कि नीचे दिया गया है:

उपरोक्त कम्प्यूटेशनल ग्राफ की व्याख्या:

  • लगातार नोड्सइसका उपयोग निरंतर मूल्यों को संग्रहीत करने के लिए किया जाता है क्योंकि यह शून्य इनपुट लेता है, लेकिन संग्रहीत मानों को आउटपुट के रूप में पैदा करता है। उपरोक्त उदाहरण में, ए और बी क्रमशः 5 और 6 के मान के साथ निरंतर नोड हैं।

  • नोड c, b के साथ निरंतर नोड को गुणा करने के संचालन को दर्शाता है। इसलिए, नोड c को निष्पादित करने से const नोड a & b का गुणन होगा।

मूल रूप से, कोई एक कम्प्यूटेशनल ग्राफ के बारे में सोच सकता है जो कि टेन्सरफ्लो कार्यक्रम में होने वाली गणितीय गणनाओं की अवधारणा का एक वैकल्पिक तरीका है। कम्प्यूटेशनल ग्राफ के अलग-अलग नोड्स को सौंपा गया संचालन समानांतर में किया जा सकता है, इस प्रकार, गणना के संदर्भ में एक बेहतर प्रदर्शन प्रदान करता है।

यहाँ हम सिर्फ गणना का वर्णन करते हैं, यह कुछ भी गणना नहीं करता है, यह किसी भी मूल्य को नहीं रखता है, यह सिर्फ आपके कोड में निर्दिष्ट कार्यों को परिभाषित करता है।

2. कम्प्यूटेशनल ग्राफ चलाना

आइए हम कम्प्यूटेशनल ग्राफ के पिछले उदाहरण को लेते हैं और समझते हैं कि इसे कैसे निष्पादित किया जाए। पिछले उदाहरण से कोड निम्नलिखित है:

उदाहरण 1:

tsorflow को tf के रूप में आयात करें # एक ग्राफ बनाएँ a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

अब, नोड c का आउटपुट प्राप्त करने के लिए, हमें a के भीतर कम्प्यूटेशनल ग्राफ को चलाने की आवश्यकता है सत्र । सत्र, CPU या GPU जैसे डिवाइसेस पर ग्राफ़ संचालन को रखता है, और उन्हें निष्पादित करने के तरीके प्रदान करता है।

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

# सत्र ऑब्जेक्ट sess = tf.Session () # को एक सत्र के भीतर ग्राफ बनाएं और आउटपुट को एक चर output_c = sess.run (c) # में नोड नोड प्रिंट (आउटपुट_सी) के आउटपुट को सत्र में जोड़ें। कुछ संसाधनों को मुक्त करें।
 आउटपुट: ३०

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

स्थिरांक, प्लेसहोल्डर और चर

TensorFlow में, एक गहरे शिक्षण मॉडल के विभिन्न मापदंडों का प्रतिनिधित्व करने के लिए स्थिरांक, प्लेसहोल्डर और चर का उपयोग किया जाता है। चूंकि, मैं पहले ही स्थिरांक पर चर्चा कर चुका हूं, मैं प्लेसहोल्डर्स के साथ शुरू करूंगा।

प्लेसहोल्डर:

एक TensorFlow स्थिरांक आपको एक मूल्य संग्रहीत करने की अनुमति देता है लेकिन, क्या होगा, यदि आप चाहते हैं कि आपके नोड रन पर इनपुट लें? इस तरह की कार्यक्षमता के लिए, प्लेसहोल्डर का उपयोग किया जाता है जो आपके ग्राफ़ को बाहरी इनपुट को मापदंडों के रूप में लेने की अनुमति देता है। मूल रूप से, एक प्लेसहोल्डर बाद में या रनटाइम के दौरान एक मूल्य प्रदान करने का एक वादा है। मैं आपको चीजों को सरल बनाने के लिए एक उदाहरण देता हूं:

tforflow को tf के रूप में आयात करें # प्लेसहोल्डर बनाना a = tf। प्लेसहोल्डर (tf.float32) b = tf। प्लेसहोल्डर (tf.float32) # असाइनमेंट गुणा ऑपरेशन w.r.t. a & ampamp b to नोड mul mul = a * b # सत्र वस्तु बनाएं sess = tf.Session () #, क्रमशः a और b के आउटपुट [sess .run () के लिए [1, 3] [2, 4] मानों को पास करके mul निष्पादित करें। mul, {a: [1,3], b: [2, 4]}) प्रिंट ('मल्टीप्लिंग एब:', आउटपुट)
 आउटपुट: [२। 12.]

के बारे में याद करने के लिए अंक प्लेसहोल्डर:

  • प्लेसहोल्डर्स को प्रारंभ नहीं किया गया है और इसमें कोई डेटा नहीं है।
  • एक प्लेसहोल्डर को इनपुट या फीड प्रदान करना होगा जो रनटाइम के दौरान माना जाता है।
  • इनपुट के बिना एक प्लेसहोल्डर को निष्पादित करना एक त्रुटि उत्पन्न करता है।

अब, हम आगे बढ़ते हैं और समझते हैं - चर क्या हैं?

चर

गहरी शिक्षा में, प्लेसहोल्डर का उपयोग आपके मॉडल या ग्राफ में मनमाने इनपुट लेने के लिए किया जाता है। इनपुट लेने के अलावा, आपको ग्राफ़ को भी संशोधित करना होगा ताकि यह नए आउटपुट w.r.t का उत्पादन कर सके। एक ही इनपुट। इसके लिए आप वैरिएबल का उपयोग करेंगे। संक्षेप में, एक चर आपको ग्राफ में ऐसे मापदंडों या नोड को जोड़ने की अनुमति देता है जो कि ट्रेन करने योग्य होते हैं यानी समय की अवधि में मूल्य को संशोधित किया जा सकता है। चर को उनके प्रारंभिक मूल्य और प्रकार के रूप में नीचे दिखाया गया है प्रदान करके परिभाषित किया गया है:

var = tf.Variable ([0.4], dtype = tf.float32)

ध्यान दें:

  • यदि आपने डेटा प्रकार स्पष्ट रूप से प्रदान नहीं किया है, तो TensorFlow प्रारंभिक मान से निरंतर / चर के प्रकार का अनुमान लगाएगा।
  • TensorFlow के अपने कई डेटा प्रकार हैं tf.float32 , tf.int32 आदि। आप उन सभी को देखें यहाँ

जब आप कॉल करते हैं, तो कॉन्स्टेंट को इनिशियलाइज़ किया जाता है tf.constant , और उनके मूल्य कभी नहीं बदल सकते हैं। इसके विपरीत, जब आप कॉल करते हैं तो वैरिएबल को प्रारंभ नहीं किया जाता है tf.Variable । एक TensorFlow कार्यक्रम में सभी चर को इनिशियलाइज़ करने के लिए, आप जरूर नीचे दिखाए गए अनुसार एक विशेष ऑपरेशन को स्पष्ट रूप से कॉल करें:

init = tf.global_variables_initializer () sess.run (init)

हमेशा याद रखें कि पहली बार एक ग्राफ का उपयोग करने से पहले एक चर को आरंभीकृत किया जाना चाहिए।

ध्यान दें: TensorFlow वैरिएबल इन-मेमोरी बफ़र होते हैं जिनमें टेंसर्स होते हैं, लेकिन सामान्य टेंसरों के विपरीत जो केवल एक ग्राफ़ चलने पर तुरंत चालू होते हैं और बाद में हटा दिए जाते हैं, चर ग्राफ़ के कई निष्पादन में बचे रहते हैं।

अब जब हमने TensorFlow की पर्याप्त मूल बातें कवर कर ली हैं, तो हम आगे बढ़ते हैं और समझते हैं कि TensorFlow का उपयोग करके एक रैखिक प्रतिगमन मॉडल कैसे लागू किया जाए।

रैखिक प्रतिगमन मॉडल का उपयोग कर TensorFlow

रैखिक प्रतिगमन मॉडल का उपयोग किसी चर के अज्ञात मूल्य (डिपेंडेंट वेरिएबल) की भविष्यवाणी के लिए किया जाता है, जो दूसरे वेरिएबल्स (इंडिपेंडेंट वेरिएबल) के ज्ञात मूल्य से रैखिक रिग्रेशन समीकरण का उपयोग करके दिखाया गया है:

इसलिए, एक लीनियर मॉडल बनाने के लिए, आपको चाहिए:

  1. निर्भर या आउटपुट चर (Y)
  2. ढलान चर (w)
  3. Y - अवरोधन या पूर्वाग्रह (b)
  4. स्वतंत्र या इनपुट चर (एक्स)

तो, हमें TensorFlow का उपयोग करके रैखिक मॉडल बनाना शुरू करें:

नीचे दिए गए बटन पर क्लिक करके कोड कॉपी करें:

कैसे जावा में एक शक्ति के लिए एक संख्या बढ़ाने के लिए
# 0.4 W = tf.Variable ([4। 4], tf.float32) के रूप में प्रारंभिक मान के साथ पैरामीटर ढलान (W) के लिए चर बनाना। -0.4 b / tf.Variable के रूप में प्रारंभिक मान के साथ पैरामीटर पूर्वाग्रह (b) के लिए चर बनाना [-0.4], tf.float32) # xx = tf.placeholder (tf.float32) # द्वारा दर्शाया गया इनपुट या स्वतंत्र चर प्रदान करने के लिए प्लेसहोल्डर बनाना, रेखीय प्रतिगमन का समीकरण रैखिक_मॉडल = W * x + b # सभी चर सेस शुरू करना = tf.Session () init = tf.global_variables_initializer () sess.run (init) # आउटपुट रेग की गणना करने के लिए प्रतिगमन मॉडल चल रहा है प्रदान करने के लिए x मान प्रिंट (sess.run (linear_model {x: [1, 2, 3, 4]}))

आउटपुट:

[0. 0.40000001 0.80000007 1.20000005]

उपर्युक्त कोड केवल प्रतिगमन मॉडल के कार्यान्वयन के पीछे मूल विचार का प्रतिनिधित्व करता है यानी आप प्रतिगमन लाइन के समीकरण का पालन कैसे करते हैं ताकि आउटपुट w.r.t प्राप्त कर सकें। इनपुट मानों का एक सेट। लेकिन, इस मॉडल को पूर्ण प्रतिगमन मॉडल बनाने के लिए दो और चीजें जोड़ी जानी हैं:

  • सबसे पहले, हमें एक तंत्र प्रदान करने की आवश्यकता है जिसके द्वारा हमारा मॉडल इनपुट और संबंधित आउटपुट के सेट के आधार पर खुद को प्रशिक्षित कर सकता है।
  • दूसरी बात जो हमें चाहिए वह है कि हम अपने प्रशिक्षित मॉडल को एक्स मानों के सेट के आधार पर वांछित या लक्ष्य आउटपुट के साथ तुलना करके अपने प्रशिक्षित मॉडल को मान्य करें।

अब हम समझते हैं कि मैं प्रतिगमन मॉडल के लिए उपरोक्त कोड को अपने कोड में कैसे शामिल कर सकता हूं।

हानि समारोह - मॉडल मान्यता

एक नुकसान फ़ंक्शन मापता है कि मॉडल का वर्तमान आउटपुट वांछित या लक्ष्य आउटपुट से कितना दूर है। मैं अपने रैखिक प्रतिगमन मॉडल के लिए सबसे अधिक इस्तेमाल किया जाने वाला नुकसान फ़ंक्शन का उपयोग करूंगा जिसे स्क्वायर्ड एरर या एसएसई का योग कहा जाता है। SSE ने w.r.t की गणना की। मॉडल आउटपुट (रैखिक_मॉडल द्वारा प्रतिनिधित्व) और वांछित या लक्ष्य आउटपुट (y) निम्नानुसार है:

y = tf.placeholder (tf.float32) त्रुटि = linear_model - y squared_errors = tf.square (त्रुटि) नुकसान = tf.reduce_sum (squared_errors) प्रिंट (sess.run (हानि, {x): [1,2,3,4] ], y: [२, ४, ६, 2]})
 आउटपुट: 90.24

जैसा कि आप देख सकते हैं, हमें एक उच्च हानि मूल्य मिल रहा है। इसलिए, हमें अपने वजन (डब्ल्यू) और पूर्वाग्रह (बी) को समायोजित करने की आवश्यकता है ताकि हम प्राप्त होने वाली त्रुटि को कम कर सकें।

टीf.train API - मॉडल को प्रशिक्षित करना

TensorFlow प्रदान करता है आशावादी नुकसान क्रम या त्रुटि को कम करने के लिए धीरे-धीरे प्रत्येक चर को बदलें। सबसे सरल अनुकूलक है ढतला हुआ वंश । यह उस चर के संबंध में नुकसान के व्युत्पन्न के परिमाण के अनुसार प्रत्येक चर को संशोधित करता है।

# ग्रेडिएंट डीसेंट ऑप्टिमाइज़र ऑप्टिमाइज़र = tf.train.GradientDescentOptimizer (0.01) ट्रेन = ऑप्टिमाइज़र। मिनिमाइज़ (नुकसान) की एक आवृत्ति को आई रेंज में (1000) के लिए: sess.run (ट्रेन, {x: [1, 2, 3] 4], y: [2, 4, 6, 8]}) प्रिंट (sess.run ([डब्ल्यू, बी]))
 आउटपुट: [सरणी ([१.९९९९९ ६४], dtype = float32), सरणी ([९। 305६६०१६] ]e-० d], dtype = float32)]

तो, यह है कि आप TensorFlow का उपयोग करके एक रैखिक मॉडल कैसे बनाते हैं और वांछित आउटपुट प्राप्त करने के लिए इसे प्रशिक्षित करते हैं।

अब जब आप डीप लर्निंग के बारे में जानते हैं, तो देखें 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। TensorFlow सर्टिफिकेशन ट्रेनिंग कोर्स के साथ एडुर्का डीप लर्निंग सीखने वालों को सॉफ्ट टाइममैक्स फंक्शन, ऑटो-एनकोडर न्यूरल नेटवर्क्स, रेस्ट्रिक्टेड बोल्ट्ज़मन मशीन (RBM) जैसे कॉन्सेप्ट्स के साथ रियल टाइम प्रोजेक्ट्स और असाइनमेंट्स का इस्तेमाल करके बेसिक और कॉन्फिडेंशियल न्यूरल नेटवर्क्स के एक्सपर्ट बनने में मदद करता है।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया टिप्पणी अनुभाग में इसका उल्लेख करें और हम आपके पास वापस आ जाएंगे।