برنامج TensorFlow التعليمي: برنامج تعليمي للمبتدئين لمدة 10 دقائق [ترجمة]

مرحبا يا هبر! أقدم لكم ترجمة المقال "درس TensorFlow: 10 دقائق درس عملي TensorFlow للمتعلمين السريع" للكاتب Ankit Sachan.


هذا البرنامج التعليمي TensorFlow مخصص لأي شخص لديه فهم أساسي للتعلم الآلي ويحاول البدء في TensorFlow.


بادئ ذي بدء ، يجب أن يكون لديك TensorFlow مثبتة. يمكنك تثبيته في هذا الدليل. ينقسم هذا الدرس إلى جزأين: في الجزء الأول نشرح الأساسيات بمثال عملي ، في الجزء الثاني نصمم نموذجًا للانحدار الخطي.


الجزء 1. أساسيات TensorFlow


TensorFlow هي مكتبة رقمية تمر فيها البيانات عبر رسم بياني. يتم تمثيل البيانات في TensorFlow بواسطة صفائف n-dimensional - tensors. يتكون الرسم البياني من بيانات (التنسورات) والعمليات الرياضية.


في العقد من الرسم البياني هي العمليات الرياضية.


تمثل حواف الرسم البياني التنسورات التي "تتدفق" بين العمليات.


هناك جانب آخر يختلف فيه TensorFlow اختلافًا كبيرًا عن أي لغة برمجة أخرى. في TensorFlow ، تحتاج أولاً إلى إنشاء مشروع لما تريد إنشاؤه. في البداية ، عند إنشاء رسم بياني ، فإن المتغيرات ليس لها معنى. في وقت لاحق ، عندما أنشأت رسمًا بيانيًا كاملاً ، فأنت تقوم بتشغيله في جلسة ، وعندها فقط ستأخذ المتغيرات أي قيم.


لنبدأ التعلم بالممارسة. تشغيل الثعبان واستيراد TensorFlow:


~$ python Python 2.7.6 (default, Oct 26 2016, 20:30:19) [GCC 4.8.4] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> >>>import tensorflow as tf 

يتم استخدام الرسم البياني لتحديد العمليات ، ويتم تنفيذ جميع العمليات في الجلسة. يتم إنشاء الرسوم البيانية والدورات بشكل مستقل عن بعضها البعض. تعامل مع الرسم البياني كمشروع بناء والدورة كموقع بناء.


1.1. الرسوم البيانية في TensorFlow


الرسم البياني هو أساس TensorFlow ، وجميع الحسابات (العمليات) ، والمتغيرات على الرسم البياني. كل ما يحدث في الكود هو على الرسم البياني الافتراضي المقدم من TensorFlow. يمكنك الوصول إلى هذا الرسم البياني على النحو التالي:


 graph = tf.get_default_graph() 

وبذلك يمكنك الحصول على قائمة بجميع العمليات في هذا العمود:


 graph.get_operations() 

الرسم البياني الخاص بك فارغ الآن. إذا كنت بحاجة إلى طباعة اسم كل عملية ، فقم بتشغيل الكود التالي:


 for op in graph.get_operations(): print(op.name) 

الإخراج سوف تكون فارغة مرة أخرى. في المستقبل ، بعد إضافة العمليات إلى الرسم البياني ، سنستخدم هذا الرمز لعرض أسمائهم.


1.2. جلسات في TensorFlow


يحدد الرسم البياني الحسابات فقط (يُنشئ المشروع) ، لكنه لا يحتوي على أي متغيرات ، ولا توجد قيم ، ما لم نقم بتشغيل الرسم البياني أو جزء من الرسم البياني في الجلسة.


يمكنك إنشاء جلسة مثل هذا:


 sess=tf.Session() ... your code ... ... your code ... sess.close() 

لا تنس أن بدء جلسة تحتاج إلى إنهائه أو استخدام بـ ... ككتلة ، على سبيل المثال مثل هذا:


 with tf.Session() as sess: sess.run(f) 

ميزة استخدام هذا الأسلوب هي أنه سيتم إغلاق الجلسة تلقائيًا في نهاية الكتلة


1.3. التنسورات في TensorFlow


يقوم TensorFlow بتخزين البيانات في التنسورات - صفائف متعددة الأبعاد تشبه إلى حد بعيد صفائف numPy.


أ) الثوابت هي القيم التي لا يمكن تغييرها. يتم تعريفها على النحو التالي:


 a=tf.constant(1.0) 

ومع ذلك ، عند محاولة الإخراج ، تحصل على ما يلي:


 print(a) <tf.Tensor'Const:0' shape=() dtype=float32> print(a) Tensor("Const:0", shape=(), dtype=float32) 

كما ترى ، هذا يختلف عن لغات البرمجة الأخرى ، مثل بايثون. لا يمكنك طباعة أو الوصول إلى الثابت حتى تبدأ الجلسة. دعونا نفعل هذا:


 with tf.Session() as sess: print(sess.run(a)) 

هذا الكود سينتج 1.0


ب) المتغيرات هي أيضا التنسورات التي تشبه المتغيرات في لغات البرمجة الأخرى:


 >>>b = tf.Variable(2.0,name="test_var") >>>b <tensorflow.python.ops.variables.Variable object at 0x7f37ebda1990> 

على عكس الثوابت ، يمكن للمتغيرات تغيير محتوياتها. ومع ذلك ، يجب تهيئة المتغيرات في TensorFlow في عملية تهيئة منفصلة. قد تستغرق عملية تهيئة جميع المتغيرات وقتًا طويلاً ، لكن TensorFlow يوفر آلية لتهيئة جميع المتغيرات في وقت واحد:


 init_op = tf.global_variables_initializer() 

تحتاج الآن إلى بدء عملية التهيئة قبل محاولة الوصول إلى المتغير:


 with tf.Session() as sess: sess.run(init_op) print(sess.run(b)) 

هذا الكود سينتج 2.0
إذا حاولت الآن طباعة العمليات في الرسم البياني


 graph = tf.get_default_graph() for op in graph.get_operations(): print(op.name) 

سوف تحصل على الإخراج التالي:


 Const test_var/initial_value test_var test_var/Assign test_var/read init 

كما ترون ، أعلنا "a" كـ Const وتمت إضافته إلى المخطط. وبالمثل ، بالنسبة للمتغير b ، تمت إضافة العديد من حالات test_var إلى الرسم البياني TensorFlow ، مثل test_var / initial_value ، test_var / read ، وما إلى ذلك. يمكنك تصور الشبكة بالكامل باستخدام TensorBoard ، وهي أداة لتصور الرسم البياني TensorFlow وعملية التعلم .


ج) العناصر النائبة هي موانع في انتظار التهيئة بالبيانات. يتم استخدامها للبيانات التي سيتم توفيرها فقط عندما يتم تنفيذ التعليمات البرمجية بالفعل في الجلسة. ما يتم نقله إلى العنصر النائب هو قاموس يحتوي على أسماء العناصر النائبة ومعانيها:


 a = tf.placeholder("float") b = tf.placeholder("float") y = tf.multiply(a, b) fd = {a: 2, b: 3} with tf.Session() as sess: print(sess.run(y, fd)) 

هذا الكود سينتج 6.0


1.4. الأجهزة في TensorFlow


يحتوي TensorFlow على ميزات مدمجة قوية للغاية لتشغيل التعليمات البرمجية الخاصة بك على GPU أو CPU أو الكتل. يمنحك الفرصة لاختيار الجهاز الذي تريد تشغيل التعليمات البرمجية الخاصة بك. ومع ذلك ، هذا ليس شيء للتفكير عندما تبدأ للتو مع TF.
حتى هنا هي صورة كاملة لكيفية عمل الحسابات في TensorFlow:
صورة


الجزء 2. TensorFlow تعليمي مع مثال بسيط


في هذا الجزء ، سننظر في الكود لتشغيل الانحدار الخطي. قبل ذلك ، دعونا نلقي نظرة على بعض وظائف TensorFlow الأساسية التي سنستخدمها في الكود.


إنشاء توزيع عشوائي عشوائي:


استخدم random_normal لإنشاء قيم عشوائية من التوزيع الطبيعي. في هذا المثال ، w هو متغير البعد 784 * 10 بقيم عشوائية مع انحراف معياري قدره 0.01.


 w=tf.Variable(tf.random_normal([784, 10], stddev=0.01)) 

Reduce_mean - يحسب متوسط ​​قيمة صفيف


 b = tf.Variable([10,20,30,40,50,60],name='t') with tf.Session() as sess: sess.run(tf.initialize_all_variables()) sess.run(tf.reduce_mean(b)) 

هذا الكود سوف يخرج 35


argmax - تشبه الى حد بعيد argmax في بيثون. الحصول على أقصى قيمة من الموتر على طول المحور المحدد.


 a=[ [0.1, 0.2, 0.3 ], [20, 2, 3 ] ] b = tf.Variable(a,name='b') with tf.Session() as sess: sess.run(tf.initialize_all_variables()) sess.run(tf.argmax(b,1)) 

اطبع صفيفًا ([2 ، 0]) يُظهر فهرس الحد الأقصى للقيمة في كل سطر من الأسطر


مشكلة الانحدار الخطي


بيان المشكلة: هناك عدد كبير من نقاط البيانات ، تحاول مطابقة خط مستقيم معهم. على سبيل المثال ، سننشئ 100 نقطة بيانات ونحاول مطابقة الخط معهم.


2.1. إنشاء مجموعة بيانات التدريب


يحتوي trainX على قيم بين -1 و 1 ، ويحتوي trainY على 3 أضعاف قيمة trainX بالإضافة إلى بعض المتغيرات العشوائية:


 import tensorflow as tf import numpy as np trainX = np.linspace(-1, 1, 101) trainY = 3 * trainX + np.random.randn(*trainX.shape) * 0.33 

2.2. النائبة


 X = tf.placeholder("float") Y = tf.placeholder("float") 

2.3. تصميم


نموذج الانحدار الخطي له الشكل

Ymodel $ = w * x $


- يجب علينا حساب قيمة ث. دعنا نهيئ w إلى الصفر وننشئ نموذجًا لحل هذه المشكلة. نحدد وظيفة التكلفة

(Y-y__model) ^ 2


يأتي TensorFlow مع العديد من أدوات التحسين التي تقوم بحساب وتحديث التدرجات بعد كل تكرار ، في محاولة لتقليل وظيفة التكلفة المحددة. سنقوم بتعريف عملية التعلم باستخدام GradientDescentOptimizer من أجل تقليل دالة التكلفة لدينا إلى سرعة تعلم تبلغ 0.01. ثم نقوم بتشغيل هذه العملية التعليمية في حلقة.
 w = tf.Variable(0.0, name="weights") y_model = tf.multiply(X, w) cost = (tf.pow(Y-y_model, 2)) train_op = tf.train.GradientDescentOptimizer(0.01).minimize(cost) 

2.4. تدريب


حتى هذه النقطة ، قمنا بتحديد رسم بياني فقط. لم تحدث أي حسابات ، لا شيء من متغيرات TensorFlow مهمة. لتشغيل هذا الرسم البياني ، نحتاج إلى إنشاء جلسة وتنفيذها. قبل ذلك ، نحتاج إلى إنشاء عملية تهيئة لجميع المتغيرات:


 init = tf.initialize_all_variables() with tf.Session() as sess: sess.run(init) for i in range(100): for (x, y) in zip(trainX, trainY): sess.run(train_op, feed_dict={X: x, Y: y}) print(sess.run(w)) 

لاحظ أن أول شيء تم القيام به هو تهيئة المتغيرات عن طريق استدعاء الحرف الأول init session.run () . في وقت لاحق نقوم بتشغيل train_op ، وإطعام feed_dict لها. أخيرًا ، نطبع قيمة w (مرة أخرى داخل sess.run ()) ، والتي يجب أن تكون حوالي 3.


ممارسة:


إذا قمت بإنشاء جلسة جديدة بعد هذا الرمز وحاولت طباعة w ، فما الذي سيتم إخراجه؟


 with tf.Session() as sess: sess.run(init) print(sess.run(w)) 

نعم ، فهمت بشكل صحيح ، سيتم عرض 0.0. بمجرد مغادرتنا للجلسة التي تم إنشاؤها في وقت سابق ، تتوقف جميع العمليات عن الوجود.


آمل أن يمنحك هذا البرنامج التعليمي بداية سريعة مع TensorFlow. لا تتردد في طرح أسئلتك في التعليقات. يمكن تنزيل الكود الكامل هنا .

Source: https://habr.com/ru/post/ar465745/


All Articles