برنامج TensorFlow التعليمي - التعلم العميق باستخدام TensorFlow



البرنامج التعليمي TensorFlow هو المدونة الثالثة في السلسلة. يتضمن جميع أساسيات TensorFlow. يتحدث أيضًا عن كيفية إنشاء نموذج خطي بسيط.

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

  • ما هو TensorFlow
  • أساسيات كود TensorFlow
  • حالة استخدام TensorFlow

ما هي موتر؟

في هذا البرنامج التعليمي TensorFlow ، قبل الحديث عن TensorFlow ، دعونا نفهم أولاً ما هي الموترات . الموترات ليست سوى أمر واقع لتمثيل البيانات في التعلم العميق.





Tensors - TensorFlow تعليمي - Edurekaكما هو موضح في الصورة أعلاه ، فإن الموترات هي مجرد مصفوفات متعددة الأبعاد ، والتي تتيح لك تمثيل البيانات ذات الأبعاد الأعلى. بشكل عام ، التعلم العميق يتعامل مع مجموعات البيانات عالية الأبعاد حيث تشير الأبعاد إلى ميزات مختلفة موجودة في مجموعة البيانات. في الواقع ، تم اشتقاق اسم 'TensorFlow' من العمليات التي تقوم بها الشبكات العصبية على الموترات. إنه حرفيًا تدفق موترات. منذ ذلك الحين ، لقد فهمت ما هي الموترات ، دعنا نتقدم في هذا البرنامج التعليمي TensorFlow ونفهم - ما هو TensorFlow؟

ما هو TensorFlow؟

TensorFlow هي مكتبة تستند إلى Python توفر أنواعًا مختلفة من الوظائف لتنفيذ نماذج التعلم العميق. كما نوقش سابقًا ، يتكون مصطلح TensorFlow من فترتين - Tensor & Flow:



في TensorFlow ، يشير المصطلح tensor إلى تمثيل البيانات كمصفوفة متعددة الأبعاد بينما يشير مصطلح التدفق إلى سلسلة العمليات التي يقوم بها المرء على الموترات كما هو موضح في الصورة أعلاه.

الآن قمنا بتغطية خلفية كافية عن TensorFlow.



بعد ذلك ، في هذا البرنامج التعليمي TensorFlow ، سنناقش أساسيات كود TensorFlow.

برنامج TensorFlow التعليمي: أساسيات الكود

بشكل أساسي ، تتضمن العملية الشاملة لكتابة برنامج TensorFlow خطوتين:

  1. بناء رسم بياني حسابي
  2. تشغيل الرسم البياني الحسابي

دعني أشرح لك الخطوتين أعلاه واحدة تلو الأخرى:

1. بناء رسم بياني حسابي

وبالتالي، ما هو الرسم البياني الحسابي؟ حسنًا ، الرسم البياني الحسابي عبارة عن سلسلة من عمليات TensorFlow مرتبة كعقد في الرسم البياني. تأخذ كل عقد 0 أو أكثر من الموترات كمدخلات وتنتج موترًا كإخراج. اسمحوا لي أن أقدم لكم مثالاً على رسم بياني حسابي بسيط يتكون من ثلاث عقد - إلى ، ب & ج كما هو مبين أدناه:

شرح الرسم البياني الحسابي أعلاه:

  • العقد الثابتةتُستخدم لتخزين القيم الثابتة لأنها لا تأخذ أي إدخال ، ولكنها تنتج القيم المخزنة كإخراج. في المثال أعلاه ، a و b عقدتان ثابتتان بقيمتين 5 و 6 على التوالي.

    بيثون تحويل الرقم إلى ثنائي
  • تمثل العقدة c عملية ضرب العقدة الثابتة a بـ b. لذلك ، سيؤدي تنفيذ العقدة c إلى مضاعفة العقدة الثابتة a & b.

في الأساس ، يمكن للمرء التفكير في الرسم البياني الحسابي كطريقة بديلة لتصور الحسابات الرياضية التي تحدث في برنامج TensorFlow. يمكن إجراء العمليات المخصصة للعقد المختلفة للرسم البياني الحسابي بشكل متوازٍ ، وبالتالي توفير أداء أفضل من حيث العمليات الحسابية.

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

2. تشغيل رسم بياني حسابي

دعونا نأخذ المثال السابق للرسم البياني الحسابي ونفهم كيفية تنفيذه. فيما يلي الكود من المثال السابق:

مثال 1:

استيراد tensorflow مثل tf # إنشاء رسم بياني a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

الآن ، من أجل الحصول على ناتج العقدة c ، نحتاج إلى تشغيل الرسم البياني الحسابي داخل a جلسة . تضع الجلسة عمليات الرسم البياني على الأجهزة ، مثل وحدات المعالجة المركزية أو وحدات معالجة الرسومات ، وتوفر طرقًا لتنفيذها.

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

# قم بإنشاء كائن الجلسة sess = tf.Session () # قم بتشغيل الرسم البياني خلال جلسة وقم بتخزين الإخراج إلى متغير output_c = sess.run (c) # طباعة إخراج العقدة c print (output_c) # إغلاق الجلسة إلى تحرير بعض الموارد sess.close ()
 انتاج: 30

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

الثوابت والعنصر النائب والمتغيرات

في TensorFlow ، يتم استخدام الثوابت والعناصر النائبة والمتغيرات لتمثيل معلمات مختلفة لنموذج التعلم العميق. منذ ذلك الحين ، ناقشت الثوابت سابقًا ، سأبدأ بالعناصر النائبة.

العنصر النائب:

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

استيراد tensorflow كـ tf # إنشاء عناصر نائبة a = tf. العنصر النائب (tf.float32) ب = tf. placeholder (tf.float32) # تعيين عملية الضرب w.r.t. a & ampamp b to node mul mul = a * b # إنشاء كائن جلسة sess = tf.Session () # تنفيذ mul بتمرير القيم [1 ، 3] [2 ، 4] لـ a و b على التوالي الإخراج = sess.run ( mul ، {a: [1،3]، b: [2، 4]}) print ('Multiplying ab:'، output)
 انتاج: [2. 12.]

نقاط لتتذكرها العناصر النائبة:

  • لم يتم تهيئة العناصر النائبة ولا تحتوي على بيانات.
  • يجب على المرء أن يوفر مدخلات أو يغذي للعنصر النائب التي تعتبر أثناء وقت التشغيل.
  • يؤدي تنفيذ عنصر نائب بدون إدخال إلى حدوث خطأ.

الآن ، دعونا نمضي قدما ونفهم - ما هي المتغيرات؟

المتغيرات

في التعلم العميق ، يتم استخدام العناصر النائبة لأخذ مدخلات عشوائية في النموذج أو الرسم البياني الخاص بك. بصرف النظر عن أخذ المدخلات ، تحتاج أيضًا إلى تعديل الرسم البياني بحيث يمكنه إنتاج مخرجات جديدة w.r.t. نفس المدخلات. لهذا سوف تستخدم المتغيرات. باختصار ، يسمح لك المتغير بإضافة مثل هذه المعلمات أو العقدة إلى الرسم البياني التي يمكن تدريبها ، أي يمكن تعديل القيمة خلال فترة زمنية. يتم تعريف المتغيرات من خلال توفير قيمتها الأولية ونوعها كما هو موضح أدناه:

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

ملحوظة:

  • في حالة عدم تقديم نوع البيانات بشكل صريح ، سوف يستنتج TensorFlow نوع الثابت / المتغير من القيمة التي تمت تهيئتها.
  • يحتوي TensorFlow على العديد من أنواع البيانات الخاصة به مثل tf.float32 ، tf.int32 إلخ يمكنك الرجوع إلى كل منهم هنا .

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

كيفية إنشاء إطار jframe
init = tf.global_variables_initializer () sess.run (init)

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

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

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

نموذج الانحدار الخطي باستخدام TensorFlow

يستخدم نموذج الانحدار الخطي للتنبؤ بقيمة غير معروفة لمتغير (متغير تابع) من القيمة المعروفة لمتغيرات أخرى (متغير مستقل) باستخدام معادلة الانحدار الخطي كما هو موضح أدناه:

لذلك ، لإنشاء نموذج خطي ، تحتاج إلى:

  1. التابع أو متغير الإخراج (ص)
  2. متغير المنحدر (ث)
  3. Y - اعتراض أو تحيز (ب)
  4. متغير مستقل أو متغير (X)

لذا ، دعونا نبدأ في بناء نموذج خطي باستخدام TensorFlow:

انسخ الرمز بالنقر فوق الزر الموضح أدناه:

# إنشاء متغير لمعامل المنحدر (W) بقيمة أولية مثل 0.4 W = tf.Variable ([. 4]، tf.float32) # إنشاء متغير لتحيز المعلمة (b) بالقيمة الأولية كـ -0.4 b = tf.Variable ([. 4]، tf.float32) [-0.4]، tf.float32) # إنشاء عناصر نائبة لتوفير مدخلات أو متغير مستقل ، يُشار إليها بـ xx = tf.placeholder (tf.float32) # معادلة الانحدار الخطي linear_model = W * x + b # تهيئة جميع المتغيرات sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # تشغيل نموذج الانحدار لحساب الناتج wrt لتوفير طباعة قيم x (sess.run (linear_model {x: [1، 2، 3، 4]}))

انتاج:

[0. 0.40000001 0.80000007 1.20000005]

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

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

الآن دعونا نفهم كيف يمكنني دمج الوظائف المذكورة أعلاه في الكود الخاص بي لنموذج الانحدار.

دالة الخسارة - التحقق من صحة النموذج

تقيس دالة الخسارة مدى تباعد الناتج الحالي للنموذج عن الناتج المطلوب أو المستهدف. سأستخدم دالة الخسارة الأكثر استخدامًا لنموذج الانحدار الخطي الذي يطلق عليه مجموع الخطأ التربيعي أو SSE. SSE محسوبة w.r.t. خرج النموذج (يمثله النموذج الخطي) والمخرج المرغوب أو المستهدف (ص) على النحو التالي:

y = tf.placeholder (tf.float32) خطأ = linear_model - y squared_errors = tf.square (error) loss = tf.reduce_sum (squared_errors) print (sess.run (loss، {x: [1،2،3،4 ] ، ص: [2 ، 4 ، 6 ، 8]})
 انتاج: 90.24

كما ترى ، نحصل على قيمة خسارة عالية. لذلك ، نحتاج إلى ضبط أوزاننا (W) والتحيز (ب) لتقليل الخطأ الذي نتلقاه.

رf.train API - تدريب النموذج

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

#Creating an مثيل محسن هبوط التدرج = tf.train.GradientDescentOptimizer (0.01) train = optimizer.minimize (loss) for i in range (1000): sess.run (train، {x: [1، 2، 3، 4] ، ص: [2 ، 4 ، 6 ، 8]}) طباعة (sess.run ([W ، b]))
 انتاج: [array ([1.99999964] ، dtype = float32) ، صفيف ([9.86305167e-07] ، dtype = float32)]

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

الآن بعد أن تعرفت على التعلم العميق ، تحقق من من Edureka ، وهي شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250000 متعلم راضٍ منتشرين في جميع أنحاء العالم. تساعد دورة Edureka Deep Learning with TensorFlow Certification Training المتعلمين على أن يصبحوا خبراء في التدريب وتحسين الشبكات العصبية الأساسية والتلافيفية باستخدام مشاريع ومهام في الوقت الفعلي جنبًا إلى جنب مع مفاهيم مثل وظيفة SoftMax والشبكات العصبية ذات التشفير التلقائي وآلة بولتزمان المقيدة (RBM).

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