का युग ध्यान लगा के पढ़ना या सीखना तथा अपने चरम पर है। यह बनाने जा रहा है 2.3 मिलियन 2020 तक नौकरियां। हर महीने नए ढांचे आने के साथ, TensorFlow और Theano कुछ समय के लिए वहाँ रहे हैं और साथ ही साथ अच्छी खासी लोकप्रियता भी हासिल की है। तो इस Theano बनाम TensorFlow लेख में, मैं निम्नलिखित विषयों पर चर्चा करूंगा:
क्या है थीनो?
थीनो को एक पुस्तकालय के रूप में परिभाषित किया जा सकता है वैज्ञानिक कम्प्यूटिंग । यह यूनिवर्सिटो डी मोंट्रे द्वारा विकसित किया गया था और 2007 से उपलब्ध है।
यह आपको बहु-आयामी सरणियों को कुशलतापूर्वक परिभाषित करने, गणितीय अभिव्यक्तियों को परिभाषित, अनुकूलन और मूल्यांकन करने की अनुमति देता है। यह CPU और GPU दोनों पर चल सकता है।
TensorFlow क्या है?
TensorFlow Google मस्तिष्क द्वारा कार्यों की एक श्रृंखला में डेटाफ़्लो प्रोग्रामिंग के लिए एक ओपन-सोर्स सॉफ़्टवेयर लाइब्रेरी है।
यह एक प्रतीकात्मक गणित पुस्तकालय है जिसका उपयोग मशीन सीखने के अनुप्रयोगों के लिए किया जाता है ।
तेनो बनाम टेंसोरफ्लो
हम निम्नलिखित मेट्रिक्स के आधार पर थीनो बनाम टेन्सरफ्लो की तुलना करेंगे:
लोकप्रियता:
थीनो | TensorFlow |
Theano एक पुराना फ्रेमवर्क है लोकप्रिय नहीं है के बीच , शोधकर्ताओं। एक बार की बात है | TensorFlow नीचे हाथ है सबसे प्रसिद्ध डीप लर्निंग फ्रेमवर्क और इसका उपयोग बहुत अधिक शोध में किया जाता है। |
निष्पादन की गति:
थीनो | TensorFlow |
TensorFlow की तुलना में तेज़ कार्य करता है। विशेष रूप से सिंगल जीपीयू टास्क, थीनो में तेजी से चलते हैं। | थेनो की तुलना में TensorFlow की निष्पादन गति धीमी है, लेकिन मल्टी-जीपीयू टास्क में यह लीड लेता है। |
प्रौद्योगिकी लाभ:
थीनो | TensorFlow |
यह संचालन की एक विस्तृत श्रृंखला का समर्थन करता है। निर्धारण करते समय थीनो ढाल की गणना करता है त्रुटि। ऑप्टिमाइज़र पर आपका पूर्ण नियंत्रण है क्योंकि आपको इसे कठिन कोड करना है। | TensorFlow को अभी भी थीनो के साथ बराबरी पर आना है।जावा में गतिरोध क्या है यह TensorFlow के लिए मामला नहीं है यह बॉक्स से बहुत सारे अच्छे ऑप्टिमाइज़र को एक्सेस देता है। जो कोडिंग को आसान बनाता है |
संगतता:
थीनो | TensorFlow |
केरस एक अद्भुत डीप लर्निंग लाइब्रेरी थीनो के साथ संगत है। यह अच्छी तरह से एकीकृत करता है। इसमें नेटिव विंडोज सपोर्ट है। यह Lasagne जैसे उच्च-स्तरीय रैपर्स का भी समर्थन करता है। | लेकिन TensorFlow के मामले में, यह अभी तक वहाँ नहीं है। हालाँकि, v2.0 में यह मामला नहीं होगा। वर्तमान में, TensorFlow में इस समर्थन का अभाव है। Lasagne के लिए कोई समर्थन नहीं। |
समुदाय का समर्थन:
थीनो | TensorFlow |
TeanorFlow के सामने आने के बाद थीनो के पास बड़ा सामुदायिक समर्थन है। इसमें TensorFlow की तुलना में अधिक प्रलेखन है | TensorFlow का ऑनलाइन सामुदायिक समर्थन अपनी लोकप्रियता के साथ तेजी से बढ़ रहा है। दस्तावेज़ीकरण तुलनात्मक रूप से कम है। |
कोड पठनीयता:
आइए उनके कोड के आधार पर थीनो बनाम टेंसोरफ्लो की तुलना करें। यहाँ मैं एक मूल उदाहरण स्क्रिप्ट ले रहा हूँ जहाँ हम कुछ डेटा ले लेंगे और उस डेटा के लिए सबसे अच्छा फिट कर सकते हैं ताकि यह अन्य डेटा बिंदुओं की भविष्यवाणी कर सके।
थीनो कोड:
आयात theano आयात theano.tensor के रूप में T आयात numpy # फिर, 100 अंक बनाने के लिए numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data - numpy.dot ([0.100, 0.200], x_data) + 0.3 # Inteanise the Theano मॉडल X = T.matrix () Y = T.vector () b = theano.sared (numpy.random.uniform (-1, 1), नाम = 'b') W =eano.saring ( numpy.random.uniform (-1.0, 1.0, (1, 2)), नाम = 'W') y = W.dot (X) + b # ग्रेडिएंट की गणना करें प्रत्येक पैरामीटर लागत के लिए माध्य-चुकता-त्रुटि WRT लिखें = T.mean (T.sqr (y - Y)) gradientW = T.grad (लागत = लागत, wrt = W) gradientB = T.grad (लागत = लागत, wrt = b) अद्यतन = [[W, W] gradientW * 0.5], [b, b - gradientB * 0.5]] ट्रेन = theano.function (इनपुट्स [[X, Y], आउटपुट = लागत, अपडेट = अपडेट, allow_input_downcast = True) के लिए i in xrange (0, 201): ट्रेन (x_data, y_data) W.get_value (), b.get_value () प्रिंट करें
समतुल्य टेन्सरफ्लो कोड:
के रूप में आयात आयात tporflow np # nPPy में 100 phony डेटा बिंदु के रूप में सुन्न आयात। x_data = np.float32 (np.random.rand (2, 100)) # रैंडम इनपुट y_data = np.dot ([0.100, 0.200], x_data) + 0.300 (रैखिक मॉडल का निर्माण करें)। b = tf.Variable (tf.zeros ([1]) W = tf.Variable (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matomul (W, x_data) + b # चुकता त्रुटियों को कम करें। loss = tf.reduce_mean (tf.square (y - y_data)) ऑप्टिमाइज़र = tf.train.GradientDescentOptimizer (0.5) ट्रेन = optimizer.minimize (हानि) # वेरिएबल्स को आरम्भ करने के लिए। init = tf.initialize_all_variables () # ग्राफ़ लॉन्च करें sess = tf.Session () sess.run (init) # विमान को फिट करें। xrange (0, 201) में कदम के लिए: sess.run (ट्रेन) यदि चरण% 20 == 0: प्रिंट चरण, sess.run (W), sess.run (b) # सबसे अच्छा फिट है W सीखता है: [0.100] 0.200]], बी: [0.300]
लंबाई वार दोनों संहिता लगभग हैं समान ज्यादा अंतर नहीं है। दो पहचान-जनित इनपुट, और लक्ष्य आउटपुट का वर्णन करने वाली सरणियाँ। लेकिन अगर हम मॉडल इनिशियलाइज़ेशन पर एक नज़र डालें।
मॉडल प्रारंभिककरण:
# TensorFlow b = tf.Variable (tf.zeros ([1])) W = tf.Variable (tf.random_uniform ([1, 2], -1.0, 1.0) y = tf.matmul (W, x_data) + b # थीनो X = T.matrix () Y = T.vector () b = theano.sared (numpy.random.uniform (-1, 1), नाम = 'b') W = theano.sared (numpy.random) .uniform (-1.0, 1.0, (1, 2)), नाम = 'W') y = W.dot (X) + b
जैसा कि आप यहाँ देख सकते हैं कि TensorFlow को X और Y वेरिएबल्स के किसी विशेष उपचार की आवश्यकता नहीं है। दूसरी ओर, थीनो को यह सुनिश्चित करने के लिए एक अतिरिक्त प्रयास की आवश्यकता है कि चर हैं प्रतीकात्मक इनपुट समारोह के लिए। बी और डब्ल्यू की परिभाषा व्याख्यात्मक है और अच्छे भी हैं।
द लर्निंग: ऑप्टिमाइज़ेशन
जावा में क्या उदाहरण हैं
# टेनसफ़्लो लॉस = tf.reduce_mean (tf.square (y - y_data)) # (1) ऑप्टिमाइज़र = tf.train.GradientDescentOptimizer (0.5) # (2) ट्रेन = optimizer.minimize (हानि) # (3) # थीनो लागत = T.mean (T.sqr (y - Y)) # (1) gradientW = T.grad (लागत = लागत, wrt = W) # (2) gradientB = T.grad (लागत = लागत, wrt = b) # (2) अपडेट = [[डब्ल्यू, डब्ल्यू - ग्रेडिएंट डब्ल्यू * ०.५], [बी, बी - ग्रेडिएंट बी * ०.५]] # (२) ट्रेन = theano.function (इनपुट्स = [एक्स, वाई], आउटपुट = लागत, अपडेट = अपडेट, allow_input_downcast = True) # (3)
(१) के लिए MSE लगभग Theano बनाम TensorFlow के लिए समान है।
(2) के लिए परिभाषित करना ऑप्टिमाइज़र TensorFlow के मामले में यह आसान और सरल है, लेकिन Theanno आपको ऑप्टिमाइज़र्स पर नियंत्रण का एक बड़ा सौदा देता है, हालांकि यह काफी लंबा है और सत्यापन प्रयास को बढ़ाता है।
3 के लिए) प्रशिक्षण समारोह कोड लगभग समान है
प्रशिक्षण निकाय:
# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) xrange में कदम के लिए (0, 201): sess.run (ट्रेन) # Thrangeo for i in xrange (0, 201): ट्रेन (x_data, y_data) W.get_value (), b.get_value () प्रिंट करें
प्रशिक्षण के लिए कोड लगभग समान है, लेकिन सत्र वस्तु में ग्राफ़ निष्पादन को एनकैप्सुलेट करना है वैचारिक रूप से क्लीनर थीनो की तुलना में।
अंतिम निर्णय: थीनो बनाम टेंसोरफ्लो
एक समापन नोट पर, यह कहा जा सकता है कि दोनों एपीआई में ए समान इंटरफ़ेस । लेकिन TensorFlow तुलनात्मक रूप से है आसान यो का उपयोग करें क्योंकि यह बहुत सारे मॉनिटरिंग और डीबगिंग टूल प्रदान करता है। थीनो लीड को अंदर लेता है प्रयोज्यता और गति , लेकिन TensorFlow तैनाती के लिए बेहतर अनुकूल है। कागजी कार्रवाई या प्रलेखन TeanorFlow की तुलना में Theano अधिक है और TensorFlow एक नई भाषा होने के कारण लोगों के पास शुरू करने के लिए कई संसाधन नहीं हैं। ओपन-सोर्स डीप-लाइब्रेरीज़ जैसे किरस, लासगैन और ब्लॉक्स रहे हैं के ऊपर बनाया गया है थीनो।
मुझे आशा है कि यह तुलना आपके लिए यह तय करने के लिए पर्याप्त थी कि किस रूपरेखा को चुनना है, निम्नलिखित की जांच करें 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। यह प्रमाणन प्रशिक्षण उद्योग के पेशेवरों द्वारा उद्योग की आवश्यकताओं और मांगों के अनुसार क्यूरेट किया जाता है। आप SoftMax फ़ंक्शन, Autoencoder Neural Networks, Restricted Boltzmann मशीन (RBM) और कासेर और TFLearn जैसे पुस्तकालयों के साथ काम करते हैं।
क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया 'थीनो बनाम टेंसोरफ्लो' के टिप्पणी अनुभाग में इसका उल्लेख करें और हम आपके पास वापस आ जाएंगे।