مرحبًا ومرحبًا بكم في برنامج Python التعليمي هذا.
والآن بعد أن أصبحنا مستعدين لتدريب الشبكة لتقليل المسافة المربعة بين المخرجات والهدف
، بفضل ما فعلناه بتتبع الأهلية في القسم السابق ، حسنًا ، كنا مستعدين بشكل أساسي لبدء
التدريب بالكامل من خلال الحصول على مدخلاتنا ، أهدافنا ، توقعاتنا ، ثم حساب الخطأ الأخير
بين التنبؤات والهدف ، ثم القيام بالانتشار العكسي باستخدام نزول متدرج عشوائي
لتحديث الأوزان.
لذلك نحن مستعدون للقيام بكل هذا ، ولكن نظرًا لأننا نريد حساب المتوسط المتحرك على 100 خطوة ،
كما تعلمون ، لتتبع المتوسط أثناء إجراء التدريب ، حسنًا ، قبل أن نقوم بهذا
التدريب بالكامل ، سنقوم بعمل فئة الآن ستحصل على هذا المتوسط المتحرك على 100 خطوة.
لذلك لا تقلق.
سنفعل ذلك بسرعة.
سنقوم بعمل فصل دراسي بثلاث وظائف ، لكننا سنفعل كل هذا في هذا البرنامج التعليمي الفردي.
لذلك سنفعل ذلك بسرعة.
لقد فعلنا ذلك بالفعل.
وإلى جانب ذلك ، نريد التركيز على التدريب الآن لأن هذا هو الأهم.
لذلك دعونا نجعل هذا الفصل الآن في هذا البرنامج التعليمي الفردي.
حسنا.
لذلك سنقوم بتقديم فئة جديدة ، والتي سوف نسميها المتوسط المتحرك لأربعة.
ثم هنا نبدأ بالدالة الأولى.
هذا بالطبع ، وظيفة init التي لا تتغير أبدًا فيها.
وستأخذ وظيفة init هذه وسيطين.
الأول هو الذات للمتوسط المتحرك للكائن المستقبلي والحجم ، والذي سيتوافق مع حجم قائمة
المكافآت التي سنقوم بحساب المتوسط لها.
إذن هذا سيكون 100
حسنا.
إذن ، لدينا سعتنا للدالة init ، والآن لننتقل إلى داخل الدالة.
الآن أنت تعرف ماذا تفعل.
علينا تهيئة المتغيرات الخاصة بالكائن.
وهذه الأمور جيدة أولاً ، ستكون القائمة الأولى قائمة بالمكافآت.
لذلك ستكون هذه القائمة التي تحتوي على 100 مكافأة والتي سنحسب متوسطها.
هنا الآن ، نحن ببساطة نبدأ هذه القائمة بهذه القائمة الفارغة هنا.
لذا قائمة المكافآت.
وبعد ذلك ، سيكون المتغير الثاني لأجسامنا المستقبلية ، بالطبع ، الحجم والحجم سيكون
مساويًا للحجة التي سندخلها عند إنشاء كائنات المتوسط المتحرك في المستقبل ، لذا
فإن الحجم هنا ونحن مستعدون بالفعل انتقل إلى الوظيفة التالية التي ستكون وظيفة ADD والتي ستضيف
المكافآت التراكمية.
كن حذرا ليست المكافأة البسيطة ، إنها المكافأة التراكمية.
وهذا لأننا ، كما تعلمون ، نقوم بتتبع الأهلية ، وبالتالي نتعلم كل عشر خطوات
، وبالتالي نتعلم بمكافأة تراكمية وليس بمكافأة بسيطة.
لذا فإن وظيفة الإضافة هذه التي نحن بصدد القيام بها ستضيف المكافأة التراكمية إلى قائمة المكافآت هذه.
إذن ، def ، سنسميها ADD ، بالطبع ، وستأخذ دالة ADD هذه وسيطتين.
الأول هو الذات لأننا سنستخدم قائمة المكافآت هذه هنا لأننا ببساطة سنلحق المكافآت
التراكمية بقائمة المكافآت هذه.
لذلك نحن بحاجة إلى هذه الذات لتكون قادرة على الحصول على هذه الذات.
والثاني سيكون المكافأة التي ستمثل المكافأة التراكمية.
حسنا.
إذن ، هاتان الوسيطتان لدالة ADD.
الآن دعنا نذهب داخل الدالة ودعنا نحدد ما يجب أن تفعله.
تمام.
ببساطة شديدة ، أول شيء يجب أن يفعله هو عندما نحصل على مكافأة تراكمية ، مكافأة جديدة ، كما تعلم ، عندما
نتقدم في عشر خطوات جديدة ، حسنًا ، ما يتعين علينا القيام به هو إضافة هذه المكافآت التراكمية إلى
القائمة.
وهذا بالضبط ما سنفعله.
سنقوم بكتابة سطر من التعليمات البرمجية سيضيف هذه المكافأة التراكمية الجديدة التي نحصل عليها
بعد التقدم في عشر خطوات إلى قائمة المكافآت هذه هنا.
وللقيام بذلك ، يتعين علينا فصل شرطين ، لأننا سنعمل مع الدُفعات ، حسنًا ، ستكون المكافآت في
بعض القوائم ، لكن في بعض الحالات الأخرى يمكن أن تكون المكافآت أيضًا كعنصر
واحد.
وبناء الجملة لإضافة عنصر إلى قائمة ، وهي قائمة المكافآت هنا ليست هي نفسها سواء
كنت تضيف قائمة أو عنصرًا واحدًا.
لذلك علينا فقط أن نجعل هذا الشرط الذي سيفصل بين هاتين الحالتين.
ولنبدأ بالحالة الأولى ، وهي الحالة عندما يكون ما نضيفه إلى قائمة المكافآت هذه عبارة
عن قائمة.
وللقيام بذلك ، سنضيف مثالاً ، وفي الأقواس ، أدخل وسيطتين.
الأول هو المكافأة التي نضيفها.
والثاني هو القائمة.
وبالتالي ، إذا كان هذا مثالًا ، فإن قائمة المكافآت تعني إذا كانت المكافآت مدرجة في قائمة ، وبالتالي إذا كانت
المكافآت مدرجة في قائمة ، فإن ما نفعله هو ببساطة الذات التي نأخذها في قائمتنا.
المكافآت.
وسنضيف هذه القائمة لأن هذه قائمة ، ما يمكننا فعله هو استخدام عملية إضافة بسيطة
لأنه يمكننا جمع قائمتين معًا.
المكافآت.
ها هي القائمة ، لأن هذا سيساوي صحيحًا.
يعني لو كنا في هذه الحالة.
وبالتالي يمكننا ببساطة تلخيص هذه القائمة في قائمة المكافآت لدينا ، وبالتالي يمكننا ببساطة إضافة قائمة المكافآت
هنا بالإضافة إلى المكافآت المتساوية.
ومن خلال القيام بذلك ، نقوم فقط بتوسيع القائمة بجمع هاتين القائمتين معًا.
حسنا.
ثم الشرط الثاني.
لذلك يمكننا ببساطة إضافة آخر.
هذا إذا كانت المكافأة ليست قائمة ، وبالتالي ، إذا كانت عنصرًا واحدًا.
وماذا يحدث في هذه الحالة؟
حسنًا ، هذا هو نفسه.
نريد إضافة المكافآت إلى قائمة المكافآت الخاصة بنا ، لكن لا يمكننا استخدام هذه الصيغة لأن المكافآت لن تكون قائمة
بعد الآن.
سيكون عنصرًا واحدًا.
ولذا فإن ما نحتاج إلى استخدامه هو بناء جملة آخر ، وهو وظيفة الإلحاق.
عندما تريد إضافة عنصر واحد إلى قائمة ، يمكنك إضافة بعض العناصر التي تحتاجها لاستخدام وظيفة
الإلحاق.
وهذا بالضبط ما سنفعله الآن.
سنأخذ قائمة مكافآت الكائن ونلصقها هنا ثم نضيف نقطة إلحاق.
هناك نذهب.
أول واحد وبالطبع بين قوسين نقوم بإدخال العناصر التي نريد إلحاقها.
وهذا بالطبع مكافأة.
لكن المكافآت في هذه الحالة لن تكون قائمة.
سيكون عنصرًا واحدًا ، مثل مكافأة تراكمية واحدة ، وليس في قائمة.
حسنا.
ثم نريد القيام بذلك ، لكن علينا الآن إضافة شيء آخر.
هذا ما يحدث عندما تحصل قائمة المكافآت هذه على أكثر من 100 عنصر.
حسنًا ، في هذه الحالة ، ما يتعين علينا القيام به هو حذف العنصر الأول من قائمة المكافآت هذه
للتأكد من أن قائمة المكافآت هذه دائمًا لا تحتوي على أكثر من 100 عنصر.
لذلك تمامًا مثل ما فعلناه للسيارة ذاتية القيادة عند إنشاء نافذة النتيجة.
وللتأكد من ذلك ، سنضيف شرطًا جيدًا يحدد أنه كلما كان طول قائمة المكافآت الخاصة بنا ، يكون
هذا هو عدد العناصر في قائمة المكافآت لدينا عندما يكون هذا الرقم أكبر
من الذات ، هذا الحجم ، هذا هو الحجم الذي حددناه هنا والذي سيساوي لاحقًا 100 عند
إنشاء الكائن.
حسنًا ، بمجرد أن يصبح عدد عناصر قائمة المكافآت هذه أكبر من 100.
حسنًا ، ما نريد فعله هو حذف العنصر الأول من قائمة المكافآت التي يمكننا الحصول عليها من خلال أخذ الرقم
القياسي صفرًا.
هذا هو الفهرس الأول في قائمة المكافآت الخاصة بنا.
هذا هو العنصر الأول في قائمة المكافآت الخاصة بنا ، ونريد حذفه عندما تحتوي قائمة المكافآت لدينا
على أكثر من 100 عنصر.
لذلك مع هذا مع هذا الشرط هنا ، نتأكد من أن قائمة المكافآت لدينا لا تحتوي أبدًا على
أكثر من 100 عنصر.
وبالتالي ، ما يمكننا فعله الآن هو إنشاء دالة جديدة لحساب متوسط قائمة المكافآت لدينا والتي
ستحتوي على 100 عنصر في التشغيل ، وبالتالي سنحسب المتوسط المتحرك على 100 خطوة في كل
مرة.
لذلك دعونا نجعل هذه الوظيفة الجديدة.
سيكون الأمر سهلاً للغاية نظرًا لوجود الوظيفة الرئيسية في Python ، وهي وظيفة
من NumPy لحساب متوسط القائمة.
فلنقدم هنا آخر دالة لدينا ، والتي سنسميها بالمتوسط.
وستأخذ هذه الوظيفة حجة واحدة ستكون ذاتية ، لأننا بالطبع سنستخدم
، قائمة المكافآت لدينا ، والتي هي متغير من أجسامنا.
هكذا النفس والقولون.
والآن دعونا نحسب المتوسط ، ولذا سنعيد المتوسط بشكل مباشر لأنه يمكننا الحصول عليه من خلال
الدالة المتوسطة التي نطبق عليها بالطبع.
حسنًا ، ما نريد حسابه ، يعني ذلك قائمة المكافآت.
أعتقد أنني ما زلت نسخته.
نعم.
هناك نذهب.
لذا فإننا ببساطة نعيد متوسط قائمة المكافآت.
والمتوسط ، كما قلت ، دالة بواسطة non pi.
لذلك أقوم هنا بإضافة الاختصار و p يعني قائمة المكافآت الذاتية.
وها نحن ذا.
لدينا متوسطنا على 100 خطوة.
في احسن الاحوال.
لذلك صنعنا هذا الفصل بكفاءة عالية.
نحصل الآن على التعليمات الخاصة بكيفية الحصول على متوسط متحرك على 100 خطوة.
ونظرًا لأننا سنستخدم كائن متوسط متحرك واحدًا عند القيام بالتدريب ، حسنًا ، فلنقم بالفعل بإنشاء
كائن المتوسط المتحرك هذا.
ولذا سنسميها A وببساطة سيكون Mar كائنًا من الفئة A.
وكما قلنا ، نريد أن يكون الحجم 100 لأننا نريد حساب المتوسط المتحرك على 100 خطوة.
مثالي جدا.
هناك نذهب.
نحن الآن جاهزون لتدريب الذكاء الاصطناعي لدينا لنكون أذكياء في النهاية.
إنه بشأن الوقت.
من هذه النقطة سيصبح الذكاء الاصطناعي لدينا ذكيًا.
لذلك لا يمكنني الانتظار لتدريبها.
سيكون الأمر سهلاً للغاية لأن هذا شيء فعلناه بالفعل.
لكن هذا سيكون ممتعا.
وإلى جانب ذلك ، سيحين الوقت للاستمتاع بمزيد من المرح لأن أعيننا ستكون جاهزة
تمامًا.
هذا مبني وذكي أيضًا ، وبالتالي سنقوم بتنفيذ الكود وبعد ذلك سوف يلعب الذكاء الاصطناعي الخاص بنا
لعبة الموت ، وفي النهاية سنشاهد مقاطع فيديو لعبة الذكاء الاصطناعي الخاصة بنا وسنرى ما إذا كانت ستتمكن من الوصول
إلى السترة.
لذلك لا استطيع الانتظار.
لنقم بهذا التدريب.
وحتى ذلك الحين.
و انا.