مروج المهاجري – مترجم بتصرف من هذا المقال
مؤخرا تم اطلاق الاصدار الثاني من مكتبة TensorFlow مفتوحة المصدر بعد أن كانت أول انطلاقة لها في عام ٢٠١٥. الاصدار الثاني من المكتبة شمل الكثير من التغييرات والتي ركزت في اساسها على توسيع قدرات المكتبة بحيث تصبح قادرة على عمل اي شيء يتطلبه ممارس تعلم الآلة Machine Learning، تأتي التحديثات الجديدة في الاصدار الثاني من مكتبة TensorFlow بتغييرات جذرية تحل الشكاوي السابقة من مستخدمي هذه المكتبة نظرا
لتعقيدها واسلوبها المبهم ( أو كما يمكننا وصفه بالصندوق الاسود ). وبالتالي فإن الاصدار الثاني من مكتبة TensorFlow يهدف إلى جعل المكتبة سهلة الاستخدام. في هذا المقال سوف نقوم بإلقاء الضوء على خمسة تغييرات اساسية في مكتبة TensorFlow باصدارها الثاني.
١. التنفيذ الافتراضي
عند بناء شبكة عصبية في الاصدار الأول لمكتبة TensorFlow بنسخها المتعددة كان لابد من الاعتماد على Graph وهي طريقة مبهمة حيث لايمكننا معرفة ماذا يحصل خلال وقت التشغيل. فعلى سبيل المثال اذا اردنا طباعة
متغير TF graph اثناء التشغيل باستخدام دالة الطباعة الاعتيادية في بايثون print() فإننا لانحصل على قيم المتغير بل نحصل على قيمة مرجعية لنود في graph (وليست هي المعلومة التي نبحث عنها في الغالب!). اما الان في الاصدارة الثانية من مكتبة TensorFlow فإن الوضع اسهل بكثير من ناحية التنفيذ حيث ان كود TensorFlow اقرب مايكون لكود بايثون عادي بل ربما يتشابه ببساطته مع مكتبة Numpy الاساسية. لم يعد هنالك داعي لانشاء tf.Session() وعدم القدرة على استعراض قيم النود لـ graph. ببساطة كل المتغيرات يمكن الحصول عليها الان بدالة print()
مثال على عملية التدريب training في الاصدار الاول لمكتبة TensorFlow 1.x
مثال على عملية التدريب training في الاصدار الثاني لمكتبة 2.0 TensorFlow
٢. مكتبة Keras كواجهة برمجة التطبيقات high-level API
تعتبر مكتبة Keras لكثير من مبرمجي machine learning كوسيلة API لبناء نماذج للتعلم العميق deep learning models بسبب سهولتها مقارنة ببعض إطارات العمل الاخرى مثل TensorFlow و MXNet. فعليا يمكن بناء شبكات عصبية باستخدام طريقة مباشرة عن طريق تمرير بعض المدخلات والمخرجات من دالة إلى اخرى بحيث ان كل دالة تمثل طبقة في هذه الشبكة كطبقة الالتفاف convolutional او طبقة التجميع pooling على سبيل المثال. في الاصدارة الثانية من مكتبة TensorFlow اصبحت Keras هي high-level API بشكل رسمي. عند تحميلك
لمكتبة TensorFlow بإصدارها الثاني ستتواجد مكتبة Keras معها تلقائيا ولا حاجة لكتابة اي كود لربط المكتبتين ببعضها بحيث سيكون هنالك دمج بينهما دون تدخل منك. ومع ذلك فهذا لايعني انه لايمكن استخدام مكتبة Keras وحدها دون TensorFlow! اذا كنت ترغب باستخدام Keras فقط يمكنك ذلك. كما انه بإمكانك استخدام Keras فقط ثم اضافة بعض التخصيص على بعض الطبقات او انشاء training scheme جديد باستخدام TensorFlow. وهذه السلاسة والانسجام بين المكتبتين هو توازن رائع مرغوب.
٣. ترتيب وتنظيف API
دخلت الاصدارة الاولى لمكتبة TensorFlow في عدة مراحل تطويرية وتبعتها الكثير من واجهات برمجة التطبيقات APIs المخصصة والتي سعت الى توسيع وظائف المكتبة. فعلى سبيل المثال عندما نقوم ببناء شبكة عصبية باستخدام الاصدارة الاولى لمكتبة TensorFlow فسيكون لدينا الكثير من الخيارات كـ: tf.slim , tf.layers , tf.contrib.layers , tf.keras. اضف الى ذلك الكثير من التخصيصات التي تم عملها لاغراض مثل عمليات المعالجة debugging او العمليات الرياضية او عمليات machine learning والتي تقود في النهاية الى بيئة فوضوية! اما مع الاصدارة الثانية لمكتبة TensorFlow فقد تم تبسيط وتوحيد ونقل (او ربما اختفاء) الكثير من واجهات برمجة التطبيقات APIs مثل tf.app , tf.flags , tf.logging وغيرها. علاوة على ذلك فإن الـ APIs التي سبق وان كان لديها
تشابهات مع مكتبة Keras فقد تم استبدالها كليا بنسخة Keras الاكثر بساطة. بشكل عام فإن هذا التغيير بالتحديد سيجعل من استخدام المكتبات امر اسهل واقل تعقيداً من حيث ان عملية التوثيق ستصبح اوضح وعملية مشاركة الاكواد بين المستخدمين ستصبح اسهل بما ان الجميع سيستخدم نفس API. نقطة اخيرة جديرة بالذكر في هذا الخصوص هو انه بالامكان عمل ترقية للكود اوتوماتيكيا من الاصدارة الاولى لمكتبة TensorFlow للثانية مع API المنقولة باستخدام السكربت من هنا.
٤. استخدام البيانات في مكتبة TensorFlow
اعتدنا على استخدام queue runners (الغير منظمة) والمطلوبة لتحسين اداء عملية التدريب مع البيانات الكبيرة، ولكن في الاصدار الثاني لمكتبة TensorFlow فقد تم استبدالها تماما بـ tf.data والتي تقوم بقراءة المدخلات في عملية التدريب باستخدام piplines بطريقة منظمة وبسيطة وسهلة كتلك التي تحصل في fit_generator و flow_fuctions في مكتبة Keras. اضف الى ذلك ان الاصدار الثاني من مكتبة TensorFlow يدعم طريقة الادخال
المريحة من الذاكرة مثل Numpy arrays. ولمزيد من المعلومات عن طريقة استخدام tf.data في TensorFlow 2.0 يمكنك الاطلاع هنا
٥. لازال بإمكانك تشغيل الاكواد المكتوبة بـ TensorFlow 1.x بنسخة الاصدار الثاني 2.0
عملية الانتقال من الاصدارة الاولى للثانية لمكتبة TensorFlow لن تكون معقدة ابدا مع توفر خاصية تشغيل الاكواد المكتوبة بـ TensorFlow 1.x بنسخة TensorFlow 2.0 ولكن بطبيعة الحال قد لا تستطيع الاستفادة من المميزات الموجودة في الاصدار الجديد! ولكن هذه الخاصية ستسمح لك بتغيير واستبدال الاكواد القديمة بمثيلاتها في الاصدار الجديد بشكل تدريجي حتى تصل إلى الانتقال الكامل.
الخلاصة
قمنا بذكر اهم التغييرات الاساسية في مكتبة TensorFlow الشهيرة في اصدارها الثاني ولكن اذا كنت مهتم بمعرفة تفاصيل اكثر يمكنك الاطلاع على الدليل الرسمي من هنا. وبامكانك ايضا اخذ كورس عن طريق موقع كورسيرا من هنا، والذي يستخدم الاصدار الثاني من مكتبة TensorFlow!