WEBVTT

00:00.120 --> 00:02.720
مرحبًا ومرحبًا بكم في برنامج Python التعليمي هذا.

00:02.730 --> 00:08.010
في هذا البرنامج التعليمي ، سنقوم بالخطوة الأولى في تنفيذ نموذج التعلم العميق.

00:08.010 --> 00:13.560
لذلك نحن في الأساس على وشك تنفيذ العملية الكاملة لخوارزمية التعلم العميق.

00:13.560 --> 00:16.530
ولذا سنستخدم ما أنشأناه من قبل.

00:16.560 --> 00:22.320
هذه هي بنية الشبكة العصبية لإعادة تشغيل الذاكرة ، لدمجها في عملية التعلم العميق

00:22.470 --> 00:23.520
بأكملها.

00:23.880 --> 00:28.200
وستندرج خوارزمية التعلم العميق هذه في فئة واحدة.

00:28.200 --> 00:32.070
لذا فهذه هي آخر فئة نضعها في تطبيق الذكاء الاصطناعي.

00:32.070 --> 00:35.520
وستحتوي هذه الفئة فقط على وظائف مختلفة.

00:35.520 --> 00:41.730
لذلك سيكون لدينا وظائف init التي ستنشئ وتهيئ جميع المتغيرات المرتبطة بأشياء التعلم العميق

00:41.730 --> 00:47.070
المستقبلية والتي ستمثل نموذج التعلم العميق نفسه والذي سيكون له بعض الوظائف

00:47.070 --> 00:48.300
الأخرى.

00:48.300 --> 00:52.650
سيكون أحدهم بالطبع هو تحديد الإجراء الصحيح في كل مرة.

00:52.650 --> 00:58.860
سيكون لدينا أيضًا وظيفة تحديث ، وظيفة تسجيل للحصول على النتيجة ولدينا فكرة عن كيفية سير

00:58.860 --> 00:59.730
التعلم.

00:59.730 --> 01:05.640
إذا كان الأمر يسير على ما يرام ، وإذا كان الاستكشاف يسير على ما يرام ، وإذا كان بإمكانه الانتقال إلى الاستغلال

01:05.640 --> 01:11.130
، وبعد ذلك سيكون لدينا وظيفة حفظ لحفظ النموذج ، وهذا يعني حفظ دماغ السيارة ثم وظيفة التحميل في النهاية

01:11.130 --> 01:12.180
.

01:12.180 --> 01:14.400
لذلك لدينا وظيفتان يجب القيام بهما.

01:14.400 --> 01:20.730
سنقوم بعمل وظيفة واحدة لكل برنامج تعليمي واليوم سنبدأ بوظيفة init كالمعتاد عندما

01:20.730 --> 01:22.740
نقوم بعمل فصل دراسي.

01:22.740 --> 01:33.270
لكن أولاً ، دعونا لا ننسى تقديم الفئة ، لذلك سنسميها D ، Q ، N لشبكة Q العميقة ، ثم بعض الأقواس

01:33.270 --> 01:38.700
، والنقطتين ، وهناك نذهب مع وظيفتنا الأولى.

01:39.300 --> 01:47.790
لنفعل هذا الشرط السفلية المزدوجة ، والشرط السفلية المزدوجة مرة أخرى والأقواس.

01:47.880 --> 01:53.400
كما فهمت في هذه الوظيفة ، سنقدم المتغيرات المرتبطة بأشياءنا.

01:53.400 --> 01:59.190
لذلك سيكون لدينا سطرين نبدأ كل شيء من تلقاء نفسه وسنقوم بشكل أساسي بإنشاء وتهيئة

01:59.190 --> 02:03.270
جميع المتغيرات اللازمة لتنفيذ شبكة Q عميقة.

02:03.270 --> 02:09.150
لذلك سنقوم ، على سبيل المثال ، بإنشاء كائن لشبكتنا لأننا بالطبع بحاجة إلى شبكتنا العصبية

02:09.150 --> 02:12.150
العميقة ، ثم سنحتاج إلى ذاكرتنا.

02:12.150 --> 02:14.490
سنقوم بإنشاء متغير آخر للذاكرة.

02:14.490 --> 02:17.610
لذلك سيكون لدينا متغير آخر ذاتي تلك الذاكرة.

02:17.610 --> 02:20.280
ولكن هذا ليس كل ما يتعين علينا إنشاؤه أيضًا.

02:20.280 --> 02:24.660
بعض المتغيرات للحالة الأخيرة والقسم الأخير والمكافأة الأخيرة.

02:24.690 --> 02:30.150
هذا بالطبع ، كما تعلمون ، المتغيرات التي تراها في خوارزمية التعلم العميق.

02:30.630 --> 02:31.710
ثم ماذا بعد؟

02:31.710 --> 02:37.470
حسنًا ، سنحتاج أيضًا إلى مُحسِّن ، كما تعلم ، لإجراء هبوط متدرج عشوائي لتحديث

02:37.470 --> 02:44.190
الأوزان وفقًا لمقدار مساهمتها في الخطأ عندما يرتكب الذكاء الاصطناعي خطأً.

02:44.190 --> 02:50.220
وبعد ذلك أعتقد أن هذه هي المتغيرات التي نحتاجها الآن لإنشاء تهيئة.

02:50.220 --> 02:54.270
لكن في هذه الدالة init سنقوم بإدخال اثنين من المعطيات.

02:54.270 --> 02:59.910
أولاً ، كالعادة الذاتية ، وهي الحجة التي تشير إلى موضوعنا.

02:59.940 --> 03:05.130
ثم بما أنك تعلم ، سنقوم بإنشاء كائن من فئة الشبكة.

03:05.130 --> 03:12.000
حسنًا ، نظرًا لأن فئة الشبكة تأخذ كوسيطة في وظيفة init والمدخلات والحجم والإجراء النهائي.

03:12.000 --> 03:13.560
حسنًا ، هذا هو نفسه هنا.

03:13.560 --> 03:18.750
عند إنشاء كائن من فئة الشبكة ، سنحتاج إلى اختيار وسيطة حجم الإدخال في وسيطة

03:18.750 --> 03:19.860
إجراء NB.

03:19.890 --> 03:22.290
لذلك يمكننا فقط نسخها.

03:23.740 --> 03:24.400
و.

03:25.450 --> 03:26.380
نواجههم هنا.

03:26.500 --> 03:27.470
وها قد بدأنا.

03:27.490 --> 03:32.950
لذلك ستصبح هذه الحجج الآن أيضًا بعض الحجج للطبقة المختلفة.

03:32.950 --> 03:39.130
عندما نقوم بإنشاء بعض الكائنات المستقبلية للفصل الحالي ، فهذه بعض نماذج التعلم العميق المستقبلية

03:39.130 --> 03:44.800
حيث سنحتاج إلى تحديد حجم الإدخال ، والذي أذكره هو عدد الأبعاد في المتجهات التي تقوم بترميز

03:44.800 --> 03:50.590
حالاتك وحالات الإدخال الخاصة بك و عدد من الإجراءات ، وهو عدد الإجراءات الممكنة التي يمكن

03:50.590 --> 03:52.890
للسيارة القيام بها.

03:52.900 --> 03:57.610
لذلك أذكر هذه إما أن تذهب يسارًا أو مستقيمًا أو يمينًا.

03:58.030 --> 03:59.050
حسنًا ، رائع.

03:59.050 --> 04:04.580
ثم كما تعلم ، سننشئ كائنًا من فئة ذاكرة إعادة التشغيل لإنشاء كائن ذاكرة للحصول

04:04.580 --> 04:07.090
على ذاكرتنا عن التحولات.

04:07.240 --> 04:13.390
وفي دالة init ، لدينا حجة السعة ، ولكن نظرًا لأننا سنستخدمها مرة واحدة فقط ، في الواقع

04:13.390 --> 04:19.780
عندما نقوم بإنشاء الذاكرة وليس في أي مكان بعد ذلك ، حسنًا ، لن نحتاج إلى تحديد حجة السعة.

04:19.780 --> 04:25.330
يمكننا القيام بذلك ، لكننا سنقوم بإدخال عدد الانتقالات التي نريد أن تكون لذاكرتنا بشكل مباشر.

04:26.020 --> 04:32.230
ولكن بعد ذلك نحتاج إلى حجة أقل ، وهي معلمة جاما في نموذج التعلم العميق.

04:32.260 --> 04:36.110
تذكر أن معامل جاما هذا هو معامل التأخير.

04:36.130 --> 04:38.020
هذا هو معامل المعادلة.

04:38.020 --> 04:42.830
وبالتالي سنضعها هنا لأننا سنستخدمها بعد ذلك عدة مرات.

04:42.850 --> 04:44.770
لذلك دعونا نضعها هنا.

04:44.800 --> 04:46.690
سنسميها جاما.

04:46.960 --> 04:52.750
لذلك هذا هو مجرد اسم الوسيطة وهناك نذهب إلى أن جميع الحجج ستحتاج لوظيفة init

04:52.750 --> 04:53.520
هذه.

04:53.530 --> 04:59.980
وهذا يعني أنه كلما أنشأنا نموذج التعلم العميق الخاص بنا ، يكون ذلك عندما نقوم بإنشاء كائن جديد

04:59.980 --> 05:01.270
للفصل الحالي.

05:01.270 --> 05:07.750
حسنًا ، سنحتاج إلى تحديد حجم الإدخال وعدد الإجراءات ومعامل جاما كوسائط ، وسنقوم بإدخال

05:08.050 --> 05:10.330
القيم الحقيقية لهم قريبًا.

05:11.020 --> 05:11.410
حسنا.

05:11.410 --> 05:13.810
لننتقل الآن إلى داخل دالة init.

05:14.050 --> 05:14.320
تمام.

05:14.320 --> 05:16.330
إذن الآن سيكون هذا سهلاً بشكل أساسي.

05:16.330 --> 05:20.920
نحن على وشك إنشاء تهيئة ، كل المتغيرات التي سنحتاجها.

05:20.920 --> 05:22.710
ولذا فلنبدأ بالأول.

05:22.720 --> 05:26.010
لنبدأ بجاما في الواقع معامل التأخير.

05:26.020 --> 05:31.680
بما أن هذا متغير ، فنحن نريد أن نلحق بموضوعنا ، نبدأ بالذات.

05:31.690 --> 05:35.860
لذا ستكون جاما متغيرًا من نموذجنا الحالي.

05:35.890 --> 05:42.760
لذا فإن self that gamma تساوي الحجج التي سيتم إدخالها عند إنشاء كائن من الفصل.

05:42.760 --> 05:46.680
إذن جاما وهناك نذهب مع الوسيطة الثانية.

05:46.690 --> 05:50.440
لذا فإن الحجة الثانية ستكون نافذة المكافأة.

05:50.590 --> 05:52.240
إذن ما هي نافذة المكافأة هذه؟

05:52.270 --> 05:57.970
حسنًا ، ستكون هذه هي النافذة المنزلقة لمتوسط آخر 100 مكافأة ، والتي سنستخدمها

05:57.970 --> 06:00.910
فقط لتقييم تطور أداء الذكاء الاصطناعي.

06:00.910 --> 06:06.190
كما تعلم ، سيكون لدينا متوسط المكافأة في نافذة المكافأة هذه التي ستنزلق بمرور الوقت.

06:06.190 --> 06:11.620
وما نريد ملاحظته هو زيادة متوسط المكافآت المائة الأخيرة بمرور الوقت.

06:11.650 --> 06:18.070
لذلك دعونا نهيئها بمكافأة نقطة ذاتية ، نافذة تسطير أسفل السطر.

06:18.430 --> 06:25.150
وبما أن هذه ستكون نافذة منزلقة للمتوسط المتطور لآخر 100 مكافأة ، حسنًا ، سنقوم

06:25.150 --> 06:31.660
بتهيئتها كقائمة فارغة ومن ثم سنلحق متوسط المكافآت بمرور الوقت.

06:32.770 --> 06:35.190
حسنًا ، إذن ، أكثر إثارة.

06:35.200 --> 06:37.420
لنقم بإنشاء شبكتنا العصبية.

06:37.420 --> 06:43.600
لذلك سنسميه نموذج النقطة الذاتية ، لأنه أساسًا هو قلب النموذج.

06:43.600 --> 06:44.980
لذلك أنا أسميه النموذج.

06:45.770 --> 06:51.290
ولن يكون هذا النموذج سوى كائن من فئة الشبكة.

06:51.290 --> 06:59.300
ولإنشاء مثل هذا الكائن ، نأخذ شبكة الفصل الخاصة بنا ، ثم الأقواس ، وهنا نقوم فقط بإدخال

06:59.300 --> 07:01.610
وسيطات فئة الشبكة.

07:01.610 --> 07:07.850
لكننا نضع هذه الحجج في حجج الدالة init وبالتالي نحتاج

07:07.850 --> 07:12.410
فقط إلى نسخها هنا ولصقها في فئة الشبكة.

07:12.980 --> 07:13.850
وها نحن ذا.

07:13.850 --> 07:19.280
باستخدام هذا السطر من التعليمات البرمجية ، نقوم بإنشاء شبكة عصبية واحدة لنموذج التعلم العميق الخاص بنا.

07:20.020 --> 07:20.760
في احسن الاحوال.

07:20.770 --> 07:22.620
ثم دعونا ننشئ ذاكرة.

07:22.630 --> 07:28.930
لذا مرة أخرى ، سننشئ متغيرًا جديدًا نسميه ذاكرة النقطة الذاتية.

07:29.710 --> 07:34.090
ومرة أخرى ، سيكون هذا كائنًا من فئة ذاكرة إعادة التشغيل.

07:34.090 --> 07:40.210
لنأخذ اسم الفصل فقط ، فلننسخه ، فلنلصقه هنا.

07:40.210 --> 07:46.720
وفي بعض الأقواس ، نحتاج إلى إدخال السعة لأن السعة هي وسيطة للدالة init وهي الحجة الوحيدة

07:46.720 --> 07:49.660
التي نحتاج إلى إدخالها هنا.

07:49.990 --> 07:51.910
إذن ما هي السعة التي سنختارها؟

07:51.910 --> 07:57.370
تذكر أن هذا يتوافق مع عدد التحولات ، وعدد الأحداث ، والحالة الأقل ، والحالة الجديدة ، والعمل

07:57.370 --> 07:59.320
الأقل ، والمكافأة الأقل.

07:59.620 --> 08:08.710
وكما ذكرنا في أحد الدروس السابقة ، سنأخذ 100،000 ، 100،000 انتقال إلى الذاكرة ، وبعد ذلك سنأخذ عينات

08:08.710 --> 08:15.040
من هذه الذاكرة للحصول على عدد صغير من الانتقالات العشوائية ، وهذا ما

08:15.040 --> 08:17.350
سيتعلمه النموذج.

08:18.080 --> 08:18.500
تمام.

08:18.590 --> 08:20.170
حتى الآن لدينا ذاكرتنا.

08:20.180 --> 08:20.960
في احسن الاحوال.

08:20.990 --> 08:23.090
الآن دعنا نحصل على المحسن الخاص بنا.

08:23.180 --> 08:28.700
لذا ، مرة أخرى ، بنفسي ، أنشأنا متغيرًا جديدًا نسميه المُحسِّن.

08:29.480 --> 08:35.200
لذا فإن Optimizer هو متغير آخر لـ GQ المستقبلي ، وهو كائن ذاتي للغاية.

08:35.210 --> 08:43.370
والآن إذا عدنا للأعلى ، يمكنك أن ترى أننا استوردنا الشعلة تلك Optim ، وهي وحدة من الشعلة تحتوي على جميع

08:43.370 --> 08:46.940
الأدوات لأداء نزول التدرج العشوائي.

08:46.940 --> 08:54.200
لذلك بالطبع يحتوي على بعض المحسّنين وأعطيناه الاختصار الأمثل ، وبالتالي فإن

08:54.200 --> 09:01.460
ما سنفعله هنا هو أن نأخذ النموذج Optim الذي يشعل ذلك Optim ومن هذه الوحدة سنأخذ

09:01.460 --> 09:02.990
أحد المحسّنين.

09:02.990 --> 09:05.510
لذا كما ترون ، كلهم مدرجون هنا.

09:05.630 --> 09:07.280
كثير منهم ممتازون.

09:07.280 --> 09:10.400
على سبيل المثال ، يُعد دعم الأسلحة مُحسِّنًا ممتازًا.

09:10.430 --> 09:15.860
هذا ، على سبيل المثال ، موصى به بشدة للشبكات العصبية العادية أو التعلم العميق غير الخاضع للإشراف.

09:15.980 --> 09:22.040
لكن الشيء الآخر الممتاز والذي سنختاره هو مُحسِّن الذرة.

09:22.310 --> 09:26.330
هذا هو الذي سترى أنه مع هذا سيحصل على سيارة جيدة ذاتية القيادة.

09:26.330 --> 09:29.120
ولكن مرة أخرى ، فنحن نرحب بك تمامًا لتجربة الآخرين.

09:29.120 --> 09:32.600
يمكنك تجربة دعامة الذراعين ، لكن بالنسبة لطرازنا ، سنختار الذرة.

09:32.600 --> 09:37.100
لذلك أنا أضغط على مفتاح الإدخال ، وفي الواقع لاحظت أن هناك حرف A كبير هنا.

09:37.100 --> 09:40.340
هذا لأننا نصنع كائنًا من فئة الذرة.

09:40.340 --> 09:44.780
هذه فئة ، لكن الكائن سيكون مُحسِّنًا للذرة بحد ذاته.

09:44.780 --> 09:47.930
ولكن نظرًا لأن هذه فئة ، نحتاج إلى إدخال بعض الحجج.

09:47.930 --> 09:54.350
إن وسيطات فئة الذرة والوسيطات هي جميع المعلمات التي يمكنها تخصيص مُحسِّن

09:54.350 --> 09:55.130
الذرة.

09:55.130 --> 10:00.230
على سبيل المثال ، عادةً ما يكون هذا هو معدل التعلم أو الانحلال أو بعض المعلمات الأخرى.

10:00.230 --> 10:05.510
وإلى جانب أخذ جميع معلمات نموذجنا ، سنحدد معدل التعلم.

10:05.720 --> 10:12.650
عند الحديث عن معلمات نموذجنا ، يمكننا الحصول عليها باستخدام نموذج النقطة الذاتية.

10:12.650 --> 10:17.330
هذا هو النموذج الذي أنشأناه هنا ، نموذج التعلم الذاتي من فصل شبكتنا.

10:17.330 --> 10:18.800
هكذا نموذج علم النفس.

10:18.800 --> 10:26.720
ثم لتقييم معلمات النموذج ، نضيف نقطة أخرى ثم معاملات مع بعض الأقواس بكل

10:26.750 --> 10:27.770
بساطة.

10:27.980 --> 10:34.880
هذا فقط لتوصيل مُحسِّن الذرة بشبكتنا العصبية ، تلك التي أنشأناها هنا.

10:35.720 --> 10:42.130
وبعد ذلك ، كما ذكرنا للتو ، سنضيف معدل تعلم والحجة لذلك هي

10:42.140 --> 10:49.130
l r وسنضعه مساويًا لقيمة بحيث لا يحدث التعلم بسرعة كبيرة.

10:49.160 --> 10:53.630
إذا حصلنا على معدل تعليمي كبير جدًا ، فلن يتعلم الذكاء الاصطناعي بشكل صحيح.

10:53.630 --> 10:58.730
نريد أن نمنح الذكاء الاصطناعي الخاص بنا بعض الوقت للاستكشاف والتعلم من أخطائه.

10:58.730 --> 11:04.100
كما تعلم ، عندما نعاقبها ، عندما ترتكب بعض الأخطاء ، مثل الذهاب إلى بعض الرمال أو الاقتراب

11:04.100 --> 11:08.690
جدًا من الحائط ، حسنًا ، نريد منح الذكاء الاصطناعي بعض الوقت للتعلم.

11:08.690 --> 11:11.930
نريد انتظار تحديث الشبكة العصبية بشكل صحيح.

11:11.930 --> 11:20.480
وبالتالي فإن القيمة الجيدة لمعدل التعلم الذي انتهيت به بعد تجربة العديد منها هي 0. 01.

11:21.050 --> 11:21.410
حسنا.

11:21.410 --> 11:24.500
وهذا كل ما نحتاجه لإنشاء مُحسِّن.

11:24.500 --> 11:28.130
لذلك نحن في الأساس نقوم بإنشاء كائن من فئة الذرة.

11:28.400 --> 11:28.910
رائعة.

11:28.910 --> 11:35.750
وبعد ذلك ، فإن المتغيرات الثلاثة الأخيرة التي نحتاجها هي المتغيرات التي تتكون منها أحداث الانتقال الخاصة بنا.

11:35.930 --> 11:39.920
هذه هي الحالة الأخيرة ، القسم الأخير ، والمكافأة الأخيرة.

11:39.920 --> 11:44.690
وهذا هو أساسًا ما سننشئه الآن وسنحتاج فقط إلى تهيئته.

11:45.050 --> 11:46.820
فلنبدأ بالتاريخ الأخير.

11:46.820 --> 11:55.910
التاريخ الأخير الذي سنطلق عليه اسم النقطة الذاتية ، وآخر حالة تسطير أسفل السطر ، ثم كيف سنقوم بتهيئته؟

11:55.910 --> 12:03.440
حسنًا ، تذكر أن الحالة الأخيرة هي متجه من خمسة أبعاد ، متجه يقوم بترميز حالة واحدة

12:03.440 --> 12:04.670
من البيئة.

12:04.670 --> 12:10.640
وللتذكير ، هذه الأبعاد الخمسة هي الإشارات الثلاث للحساسات الثلاثة لليسار

12:10.640 --> 12:14.540
والمستقيم واليمين والتوجيه والتوجيه الناقص.

12:14.990 --> 12:20.990
إذن هذا متجه بالمعنى البديهي ، لكن بالنسبة لـ PyTorch يجب أن يكون أكثر من ناقل.

12:21.020 --> 12:23.600
في الواقع يحتاج إلى أن يكون موترًا للشعلة.

12:23.600 --> 12:29.930
ولكن ليس فقط يجب أن يكون موترًا للشعلة ، ولكن أيضًا يحتاج إلى بُعد آخر أحب أن أطلق

12:29.930 --> 12:33.350
عليه بُعدًا مزيفًا يتوافق مع الدُفعة.

12:33.350 --> 12:38.270
وذلك لأن الحالة الأخيرة ستكون مدخلات الشبكة العصبية.

12:38.270 --> 12:44.180
ولكن عند العمل مع الشبكات العصبية بشكل عام ، سواء كان ذلك مع TensorFlow أو PyTorch ، حسنًا

12:44.180 --> 12:47.990
، لا يمكن أن تكون متجهات الإدخال متجهًا بسيطًا في حد ذاته.

12:47.990 --> 12:49.490
يجب أن تكون دفعة واحدة.

12:49.610 --> 12:57.650
يمكن للشبكة فقط قبول مجموعة من ملاحظات الإدخال ، وبالتالي لن نقوم فقط بإنشاء موتر لمتجهات

12:57.650 --> 13:04.430
حالة الإدخال ، ولكن أيضًا سننشئ هذا البعد المزيف المقابل للدُفعة.

13:05.000 --> 13:09.530
لنفعل هذا ولنبدأ بتهيئة موتر الشعلة.

13:09.530 --> 13:12.230
للقيام بذلك ، لا يوجد شيء أكثر بساطة.

13:12.230 --> 13:21.770
نأخذ مكتبة torch الخاصة بنا ، ثم dot ، ثم سنستخدم فئة tensor لأنه كما قد تكون خمنت ، سيخلق

13:21.770 --> 13:27.650
هذا كائنًا جديدًا من فئة tensor وهو كائن موتر.

13:27.980 --> 13:29.020
وفي فئة الموتر هذه.

13:29.180 --> 13:34.380
نحتاج إلى إدخال وسيطة واحدة تحدد حجم الموتر الخاص بك.

13:34.400 --> 13:38.620
يمكنك تصوير موتر مثل مصفوفة لها نوع واحد.

13:38.630 --> 13:45.590
لكن ما سيمثله هذا الآن هو بالطبع حالة الإدخال هذه ، والتي يمكنك رؤيتها كمتجه.

13:45.980 --> 13:49.290
وبالتالي لتحديد عدد العناصر التي يجب أن يحتوي عليها هذا الموتر.

13:49.310 --> 13:54.410
حسنًا ، نحتاج بالطبع إلى استخدام حجم الإدخال ، لأن حجم الإدخال هو بالضبط

13:54.410 --> 13:57.140
عدد أبعاد متجهات حالة الإدخال.

13:57.350 --> 13:58.940
الآن يجب أن أقول أجهزة الاستشعار.

13:58.940 --> 14:05.420
وبالتالي ما نحتاجه ببساطة لإدخاله في فئة الموتر لدينا لإنشاء كائن موتر.

14:05.810 --> 14:07.160
حسنًا ، هذا هو حجم الإدخال.

14:07.310 --> 14:10.340
وبعد ذلك ، سيكون حجم الإدخال مساويًا لخمسة.

14:11.190 --> 14:12.220
حسنًا ، هذا جيد.

14:12.240 --> 14:13.520
هذا هو أول شيء يتم فعله.

14:13.530 --> 14:16.920
لقد قمنا للتو بتهيئة الموتر ، كما ينبغي أن يكون.

14:17.310 --> 14:19.920
لكن بعد ذلك ، تذكر ، علينا أن نفعل شيئًا آخر.

14:19.920 --> 14:26.010
نحن بحاجة إلى إنشاء هذا البعد الزائف ، لأن هذا هو ما تتوقعه الشبكة لمدخلاتها

14:26.010 --> 14:31.980
ولإنشاء هذا البعد التين ، والذي ، بالمناسبة ، يجب أن يكون البعد الأول.

14:31.980 --> 14:37.650
كما تعلم ، سيكون البعد الزائف المقابل للدفعة هو البعد الأول لهذا المتغير الأخير.

14:38.040 --> 14:42.960
حسنًا ، للقيام بذلك ، نحتاج ببساطة إلى إضافة نقطة ثم الضغط.

14:44.000 --> 14:49.400
ثم في بعض الأقواس ، نحتاج إلى إدخال مؤشر هذا البعد الغامض.

14:49.400 --> 14:54.380
وكما قلت للتو ، يجب أن يكون هذا البعد الزائف هو البعد الأول للدولة.

14:54.650 --> 15:02.060
ونظرًا لأن الفهارس في بايثون تبدأ من الصفر ، فنحن بحاجة إلى إدخال الصفر حتى يصبح هذا البعد الجديد هو

15:02.060 --> 15:03.140
البعد الأول.

15:03.290 --> 15:09.260
لذلك لدينا البعد الأول المقابل للدفعة ثم البعد المقابل للموتر ، والذي سيحتوي

15:09.260 --> 15:13.280
على العناصر الخمسة لحالات الإدخال الخاصة بك.

15:13.280 --> 15:16.820
هناك ثلاث إشارات اتجاه واتجاه ناقص.

15:17.120 --> 15:22.640
ثم نبدأ ، قمنا بتهيئة حالات الإدخال بشكل كامل بشكل صحيح.

15:23.060 --> 15:25.460
ثم متغيرين للذهاب.

15:25.460 --> 15:31.730
وسيكون ذلك أسهل بكثير لأن المتغير التالي هو الإجراء الأخير.

15:31.970 --> 15:36.110
هذا متغير جديد كنا ننشئه لعمل الكائن الأخير.

15:36.230 --> 15:43.430
وتذكر ، في الدرس الأول من هذا القسم ، أخبرتك أن الإجراءات ستكون إما صفرًا

15:43.430 --> 15:51.230
واحدًا أو اثنين ، ثم باستخدام متجه الدوران الثاني ، سنقوم بتحويل فهارس هذه

15:51.230 --> 15:57.830
الإجراءات إلى زوايا الدوران ، التي أذكرها بصفر 20 أو -20.

15:57.830 --> 16:00.800
يمكننا بالفعل تحديث ذاكرتنا بذلك.

16:00.950 --> 16:02.930
حسنًا ، إنه هنا بالضبط.

16:02.930 --> 16:04.370
العمل من خلال التناوب.

16:04.640 --> 16:08.990
إذا كان الإجراء صفرًا ، فسيكون هذا مطابقًا للفهرس الأول هنا.

16:08.990 --> 16:14.240
إذن ، صفر ، إذا كان الإجراء واحدًا ، فسيكون هذا متوافقًا مع الفهرس ، أحد هذا المتجه.

16:14.240 --> 16:15.380
إذن 20 درجة.

16:15.380 --> 16:18.950
وإذا كان الإجراء اثنين ، فسنحصل على -20 درجة.

16:18.950 --> 16:22.700
ستكون هذه هي زاوية دوران سيارتنا عندما نلعب الحركة.

16:23.380 --> 16:24.070
حسنا.

16:24.070 --> 16:30.370
وبالتالي ، نظرًا لأن الإجراء سيكون إما صفرًا واحدًا أو اثنين ، حسنًا ، فإن الإجراء سيكون

16:30.400 --> 16:31.600
رقمًا بسيطًا.

16:31.600 --> 16:35.370
وببساطة شديدة ، يمكننا تهيئته إلى الصفر.

16:35.380 --> 16:38.140
لا نحتاج إلى إنشاء أي موتر هنا أو أي شيء آخر.

16:38.140 --> 16:40.750
نحتاج فقط إلى تهيئته بصفر.

16:41.170 --> 16:44.410
وأخيرًا ، حسنًا ، هذه هي المكافأة الأخيرة.

16:44.410 --> 16:48.190
حتى نقطة المكافأة الأخيرة.

16:48.700 --> 16:49.660
هناك نذهب.

16:49.660 --> 16:56.230
ومرة أخرى ، المكافأة هي رقم عائم ، وأذكر أنه يقع بين ناقص واحد و زائد واحد.

16:56.230 --> 16:57.670
هذا هو الرقم مرة أخرى.

16:57.670 --> 17:02.830
وفيما يتعلق بالإجراء ، سنقوم بتهيئته إلى الصفر وها نحن ذا.

17:02.830 --> 17:06.070
مبروك وظيفة الحرف الأول جاهزة.

17:06.070 --> 17:08.740
لذلك نحن الآن على استعداد للانتقال إلى الأشياء المثيرة.

17:08.740 --> 17:16.210
والواقع أن أهم شيء بالنسبة لي هو تحديد الإجراء الذي يجب أن ألعبه في كل مرة وفي كل مرة.

17:16.210 --> 17:23.110
T وهذا هو بالضبط ما سنفعله في البرنامج التعليمي التالي عن طريق إنشاء Select Action Method.

17:23.230 --> 17:25.240
لذلك دعونا نفعل هذا في البرنامج التعليمي التالي.

17:25.240 --> 17:27.250
وحتى ذلك الحين ، استمتع بـ i.
