Theano مقابل TensorFlow: مقارنة سريعة بين الأطر



ستوفر لك هذه المقالة عن Theano vs TensorFlow مقارنة قصيرة وواضحة بين الإطارين وستساعدك على اختيار الإطار الذي يناسبك.

عصر تعلم عميق و في ذروته. سوف تخلق 2.3 مليون وظائف بحلول عام 2020. مع وجود أطر عمل جديدة كل شهر ، كان TensorFlow و Theano هناك لفترة من الوقت واكتسبوا قدرًا كبيرًا من الشعبية أيضًا. لذلك في مقالة Theano vs TensorFlow ، سأناقش الموضوعات التالية:

ما هو ثيانو؟

يمكن تعريف Theano كمكتبة لـ الحوسبة العلمية . تم تطويره من قبل جامعة مونتريال وهو متاح منذ عام 2007.





theano-logo

كومة وكومة في جافا

يتيح لك تحديد التعبيرات الرياضية التي تتضمن مصفوفات متعددة الأبعاد وتحسينها وتقييمها بكفاءة. يمكن تشغيله على كل من وحدة المعالجة المركزية ووحدة معالجة الرسومات.



ما هو TensorFlow؟

TensorFlow هي مكتبة برامج مفتوحة المصدر بواسطة Google Brain لبرمجة تدفق البيانات عبر مجموعة من المهام.

إنها مكتبة رياضيات رمزية تُستخدم لتطبيقات التعلم الآلي مثل .



Theano مقابل TensorFlow

سنقارن بين Theano و TensorFlow بناءً على المقاييس التالية:

شعبية:

ثيانو TensorFlow
Theano كونها إطار قديم هو ليس بهذه الشعبية من بين ، الباحثون. كان في يوم من الأيامTensorFlow هو الأيدي أسفل الأكثر شهرة إطار التعلم العميق ويستخدم في الكثير من الأبحاث.

سرعة التنفيذ:

ثيانو TensorFlow
يؤدي المهام بشكل أسرع من TensorFlow. تعمل مهام GPU الفردية بشكل خاص بسرعة كبيرة في Theano.سرعة تنفيذ TensorFlow أبطأ مقارنة بـ Theano ، ولكن في مهام وحدات معالجة الرسومات المتعددة ، فإنها تأخذ زمام المبادرة.

فوائد التكنولوجيا:

ثيانو TensorFlow
يدعم مجموعة واسعة من العمليات.

ثيانو يحسب التدرج عند تحديد خطأ.

لديك سيطرة كاملة على Optimizers حيث يتعين عليك ترميزها.

لا يزال يتعين على TensorFlow أن يكون على قدم المساواة مع Theano.

هذا ليس هو الحال مع TensorFlow

إنه يتيح لك الوصول إلى الكثير من Optimizers الجيد خارج الصندوق. مما يجعل البرمجة أسهل

التوافق:

جافا لديها علاقة

ثيانو TensorFlow
Keras مكتبة التعلم العميق المذهلة متوافقة مع Theano. يتكامل بشكل جيد.

لديها دعم Windows الأصلي.

كما أنها تدعم أغلفة عالية المستوى مثل اللازانيا.

ولكن في حالة TensorFlow ، فإنه لم يصل بعد. ومع ذلك ، في الإصدار 2.0 لن يكون هذا هو الحال.

حاليًا ، يفتقر TensorFlow إلى هذا الدعم.

لا يوجد دعم للازانيا.

دعم المجتمع:

ثيانو TensorFlow
يتمتع Theano بدعم أكبر من المجتمع كما حدث قبل TensorFlow.

لديها توثيق أكثر من TensorFlow

يتزايد دعم المجتمع عبر الإنترنت في TensorFlow بشكل سريع بفضل شعبيته.

التوثيق أقل نسبيا.

قراءة الكود:

دعونا نقارن بين Theano و 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 # Intialise نموذج Theano X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1 ، 1) ، الاسم = 'b') W = theano.shared ( 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]] train = theano.function (المدخلات = [X ، Y] ، النواتج = التكلفة ، التحديثات = التحديثات ، allow_input_downcast = True) لـ i في xrange (0 ، 201): القطار (x_data ، y_data) print W.get_value () ، b.get_value ()

كود TensorFlow المكافئ:

استيراد tensorflow مثل tf import numpy كـ np # إنشاء 100 نقطة بيانات زائفة في NumPy. 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.matmul (W، x_data) + b # قلل من تربيع الأخطاء. Loss = tf.reduce_mean (tf.square (y - y_data)) محسن = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # لتهيئة المتغيرات. init = tf.initialize_all_variables () # قم بتشغيل الرسم البياني sess = tf.Session () sess.run (init) # تناسب الطائرة. للخطوة في xrange (0 ، 201): sess.run (القطار) إذا كانت الخطوة٪ 20 == 0: print step، sess.run (W)، sess.run (b) # Learns الأفضل هو 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) + ب # Theano X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1 ، 1) ، الاسم = 'b') W = theano.shared (numpy.random .uniform (-1.0 ، 1.0 ، (1 ، 2)) ، الاسم = 'W') y = W. dot (X) + b

كما ترى هنا ، لا يتطلب TensorFlow أي معاملة خاصة لمتغيري X و Y. من ناحية أخرى ، يتطلب Theano جهدًا إضافيًا للتأكد من أن المتغيرات موجودة المدخلات الرمزية للوظيفة. تعريف b و W توضيحي وأيضًا أجمل.

التعلم: التحسين

# خسارة Tensorflow = tf.reduce_mean (tf.square (y - y_data)) # (1) Optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = Optizer.minimize (loss) # (3) # Theano cost = T.mean (T.sqr (y - Y)) # (1) gradientW = T.grad (التكلفة = التكلفة ، wrt = W) # (2) gradientB = T.grad (التكلفة = التكلفة ، wrt = ب) # (2) التحديثات = [[W، W - gradientW * 0.5]، [b، b - gradientB * 0.5]] # (2) train = theano.function (inputs = [X، Y]، output = cost، updates = التحديثات ، allow_input_downcast = صحيح) # (3)

لـ (1) MSE يكاد يكون هو نفسه بالنسبة إلى Theano و TensorFlow.

من أجل (2) تحديد ملف محسن أمر سهل وبسيط كما هو الحال في حالة TensorFlow ، ولكن Theanno يمنحك قدرًا كبيرًا من التحكم في استخدام Optimizers على الرغم من أنها طويلة جدًا وتزيد من جهود التحقق.

ل 3) وظيفة التدريب قانون مماثل تقريبا

هيئة التدريب:

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) للخطوة في xrange (0 ، 201): sess.run (train) # Theano لـ i في xrange (0 ، 201): القطار (x_data ، y_data) print W.get_value () ، b.get_value ()

رمز التدريب متطابق تقريبًا ، لكن تغليف تنفيذ الرسم البياني في كائن الجلسة هو منظف ​​مفاهيمي من ثيانو.

الحكم النهائي: Theano vs TensorFlow

في ملاحظة ختامية ، يمكن القول أن كلا واجهتي API لها امتداد واجهة مماثلة . لكن TensorFlow نسبيًا أسهل يمكنك استخدامه لأنه يوفر الكثير من أدوات المراقبة والتصحيح. يأخذ Theano زمام المبادرة سهولة الاستخدام والسرعة ، ولكن TensorFlow هو الأنسب للنشر. الأعمال الورقية أو توثيق بالنسبة إلى Theano ، فهي أكثر من TensorFlow و TensorFlow كونها لغة جديدة لا يملك الناس الكثير من الموارد لتبدأ بها. المكتبات العميقة مفتوحة المصدر مثل Keras و Lasagne و Blocks كانت كذلك بنيت على رأس ثيانو.

آمل أن تكون هذه المقارنة كافية بالنسبة لك لتحديد إطار العمل الذي تختاره ، تحقق من من Edureka ، وهي شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250000 متعلم راضٍ منتشرين في جميع أنحاء العالم. يتم تنظيم تدريب الشهادة هذا بواسطة متخصصين في الصناعة وفقًا لمتطلبات ومتطلبات الصناعة. سوف تتقن مفاهيم مثل وظيفة SoftMax ، والشبكات العصبية التلقائية ، وآلة بولتزمان المقيدة (RBM) وتعمل مع مكتبات مثل Keras & TFLearn.

استثناء مؤشر فارغ في برنامج مثال جافا

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في 'Theano vs TensorFlow' وسنعاود الاتصال بك.