در این مطلب، ویدئو آموزش هوش مصنوعی Python Pong – با استفاده از NEAT با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 1:18:13
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:02,850 –> 00:00:05,950
[موسیقی]
2
00:00:08,639 –> 00:00:10,480
در حال حاضر شما در حال تماشای یک Ai هستید که
3
00:00:10,480 –> 00:00:12,320
به خودش یاد می دهد چگونه بازی پنگ را بازی کنید،
4
00:00:12,320 –> 00:00:14,240
اکنون این کار را با استفاده از
5
00:00:14,240 –> 00:00:15,920
الگوریتمی به نام neat انجام می دهد که مخفف
6
00:00:15,920 –> 00:00:18,720
تکامل عصبی توپولوژی های تقویت شده است،
7
00:00:18,720 –> 00:00:20,320
اکنون در این ویدیو
8
00:00:20,320 –> 00:00:22,160
به شما توضیح می دهم که چگونه این الگوریتم کار می کند و سپس به
9
00:00:22,160 –> 00:00:23,840
شما نشان می دهد که چگونه آن را در این بازی پیاده سازی کنید،
10
00:00:23,840 –> 00:00:26,080
اگرچه ما
11
00:00:26,080 –> 00:00:28,000
روی تکنیک ها و استراتژی های پونگ تمرکز خواهیم کرد
12
00:00:28,000 –> 00:00:29,599
که در این ویدیو به شما نشان می دهم
13
00:00:29,599 –> 00:00:31,359
تقریباً برای هر بازی کار می کند، بنابراین
14
00:00:31,359 –> 00:00:33,120
اگر به ساخت ai و ساختن علاقه مند هستید.
15
00:00:33,120 –> 00:00:35,440
ai برای بازی ها به طور کلی، پس حتماً
16
00:00:35,440 –> 00:00:36,880
از طریق این ویدیو تماشا کنید و مطمئن هستم
17
00:00:36,880 –> 00:00:38,960
که اکنون چیزهای زیادی یاد خواهید گرفت، می خواهم
18
00:00:38,960 –> 00:00:40,160
به این نکته اشاره کنم که ما قصد نداریم
19
00:00:40,160 –> 00:00:42,480
مانند آخرین ویدیوی قبلی، پونگ را از ابتدا کدنویسی کنیم.
20
00:00:42,480 –> 00:00:44,399
در اینجا من
21
00:00:44,399 –> 00:00:46,160
یک ai را کدنویسی کردم که Flappy bird را پخش می کرد،
22
00:00:46,160 –> 00:00:47,920
آن را در توضیحات پیوند می دهم و به این ترتیب کاری
23
00:00:47,920 –> 00:00:48,960
که می خواهم انجام دهم این است که کد شروعی را به شما بدهم
24
00:00:48,960 –> 00:00:50,719
که یک
25
00:00:50,719 –> 00:00:52,719
بازی پونگ عملکردی دارد و سپس به نحوه واقعی ما نگاه می
26
00:00:52,719 –> 00:00:54,800
کنیم پیاده سازی الگوریتم منظم
27
00:00:54,800 –> 00:00:56,480
و m با استفاده از پاروهای مختلف و به خوبی
28
00:00:56,480 –> 00:00:58,719
در ai تمرین کنید، پس با این گفته بیایید
29
00:00:58,719 –> 00:01:00,640
پیش برویم و پس از یک
30
00:01:00,640 –> 00:01:02,640
کلمه سریع از حامی ما قبل
31
00:01:02,640 –> 00:01:04,479
از شروع به کار وارد محتوا شویم، باید از appify برای
32
00:01:04,479 –> 00:01:07,040
حمایت مالی از این ویدیو تشکر کنم appify به شما امکان می
33
00:01:07,040 –> 00:01:09,200
دهد هر وب سایتی را به یک api تبدیل کنید. و میتوانید
34
00:01:09,200 –> 00:01:10,960
هر کاری را که به صورت دستی در یک
35
00:01:10,960 –> 00:01:13,840
مرورگر وب انجام میدهید در مقیاس با appify خودکار کنید، میتوانید یکپارچهسازی
36
00:01:13,840 –> 00:01:16,159
وب اتوماسیون وب اسکراپینگ را انجام دهید
37
00:01:16,159 –> 00:01:18,720
و بیشتر به عنوان یک توسعهدهنده
38
00:01:18,720 –> 00:01:20,560
میتوانید با استفاده
39
00:01:20,560 –> 00:01:23,119
از appify sdk که یک کتابخانه nodejs کاملاً برجسته است، اسکراپرهای سفارشی خود را بسازید
40
00:01:23,119 –> 00:01:25,360
یا میتوانید
41
00:01:25,360 –> 00:01:27,920
اکنون از کلاینت python api خود استفاده کنید، اگر در
42
00:01:27,920 –> 00:01:30,000
نهایت یک اسکراپر یا ابزار اتوماسیون سفارشی
43
00:01:30,000 –> 00:01:31,680
ساختید، می توانید با
44
00:01:31,680 –> 00:01:33,600
انتشار راه حل خود در
45
00:01:33,600 –> 00:01:35,439
فروشگاه appify از کار خود درآمد کسب کنید و اگر نمی خواهید بنویسید، اکنون نرم افزار خود را برای کسب درآمد غیرفعال هر ماه اجاره کنید.
46
00:01:35,439 –> 00:01:37,520
47
00:01:37,520 –> 00:01:38,560
یک اسکراپر از
48
00:01:38,560 –> 00:01:40,320
ابتدا می توانید کد
49
00:01:40,320 –> 00:01:42,320
صدها ابزار از پیش ساخته شده را در فروشگاه appify چنگال کنید
50
00:01:42,320 –> 00:01:44,960
و آن را مطابق میل خود تغییر دهید.
51
00:01:44,960 –> 00:01:46,799
52
00:01:46,799 –> 00:01:48,320
لینک در
53
00:01:48,320 –> 00:01:50,720
توضیحات و دریافت یک اعتبار 5 دلاری
54
00:01:50,720 –> 00:01:52,720
هر ماه بدون نیاز
55
00:01:52,720 –> 00:01:54,640
به کارت اعتباری، اما اگر نیاز به
56
00:01:54,640 –> 00:01:56,799
ارتقا دارید، می توانید از کد
57
00:01:56,799 –> 00:01:59,439
tim20 برای 20 تخفیف استفاده کنید.
58
00:01:59,439 –> 00:02:01,759
59
00:02:01,759 –> 00:02:03,520
بنابراین میخواهم مستقیماً وارد کد شوم،
60
00:02:03,520 –> 00:02:05,040
اما فقط باید اشاره کنم که این
61
00:02:05,040 –> 00:02:06,799
ویدیو در اینجا برای افراد مبتدی طراحی نشده است،
62
00:02:06,799 –> 00:02:08,639
بنابراین فرض میکنم که
63
00:02:08,639 –> 00:02:11,120
شما درک کاملی از پایتون
64
00:02:11,120 –> 00:02:12,640
دارید که در حال حاضر درک درستی از
65
00:02:12,640 –> 00:02:14,640
شبکههای عصبی دارید. اگر
66
00:02:14,640 –> 00:02:16,080
نگران نباشید، چند لینک در
67
00:02:16,080 –> 00:02:17,840
توضیحات و منابعی برای کمک به
68
00:02:17,840 –> 00:02:19,280
شما می گذارم، بنابراین اگر زبان پایتون را نمی
69
00:02:19,280 –> 00:02:21,040
فهمید یا شاید
70
00:02:21,040 –> 00:02:22,800
فقط یک برنامه نویس مبتدی هستید، می
71
00:02:22,800 –> 00:02:24,000
توانید من را بررسی کنید. البته به نام
72
00:02:24,000 –> 00:02:25,840
programmingexpert.io
73
00:02:25,840 –> 00:02:27,440
به شما مفاهیم اساسی برنامه نویسی
74
00:02:27,440 –> 00:02:29,440
را بیشتر در پایتون می آموزد
75
00:02:29,440 –> 00:02:31,280
که در توضیحات لینک داده شده است.
76
00:02:31,280 –> 00:02:32,560
77
00:02:32,560 –> 00:02:34,959
78
00:02:34,959 –> 00:02:36,400
شما فقط می
79
00:02:36,400 –> 00:02:37,840
80
00:02:37,840 –> 00:02:39,599
خواهید قبل از مرور همه مطالب
81
00:02:39,599 –> 00:02:41,519
اینجا کمی در مورد شبکه های عصبی بیاموزید، لطفاً با خیال
82
00:02:41,519 –> 00:02:43,200
راحت دنبال کنید، به احتمال زیاد
83
00:02:43,200 –> 00:02:44,879
قادر خواهید بود یک هوش مصنوعی کارآمد دریافت کنید، ممکن است
84
00:02:44,879 –> 00:02:46,720
همه چیزهایی را که
85
00:02:46,720 –> 00:02:48,480
می دانید درک نکنید. همه چیز درست است، بنابراین اکنون که ما در
86
00:02:48,480 –> 00:02:49,920
مورد آن صحبت کردیم که
87
00:02:49,920 –> 00:02:51,280
تمام کدهای این ویدیو را نیز ذکر خواهم کرد،
88
00:02:51,280 –> 00:02:52,800
در توضیحات و همچنین
89
00:02:52,800 –> 00:02:54,959
تمام اسناد و مقالات تحقیقاتی
90
00:02:54,959 –> 00:02:57,440
که اکنون به آنها اشاره می کنم پیوند داده می شود، برای معرفی طولانی عذرخواهی می کنم
91
00:02:57,440 –> 00:02:59,120
. در واقع
92
00:02:59,120 –> 00:03:01,040
وارد کد شوید و اجازه دهید شروع به ایجاد
93
00:03:01,040 –> 00:03:02,720
این ai کنیم، بنابراین در سمت
94
00:03:02,720 –> 00:03:04,080
راست صفحه من در اینجا می توانید ببینید که
95
00:03:04,080 –> 00:03:06,000
من در واقع یک نسخه تمام شده از
96
00:03:06,000 –> 00:03:08,400
این ai دارم، بنابراین سمت راست ai است
97
00:03:08,400 –> 00:03:10,000
و من در سمت چپ هستم. هدف این
98
00:03:10,000 –> 00:03:11,440
99
00:03:11,440 –> 00:03:13,840
ویدیو آموزش هوش مصنوعی است که چگونه تمرین می کند
100
00:03:13,840 –> 00:03:15,360
و به نوعی الگوریتم ژنتیک را درک می کند،
101
00:03:15,360 –> 00:03:17,040
اما می تواند در واقع در
102
00:03:17,040 –> 00:03:19,040
مقابل هوش مصنوعی در یک بازی پنگ بازی کند
103
00:03:19,040 –> 00:03:21,599
یا دو ایس بازی کند. باز هم با همدیگر آشنا شوید،
104
00:03:21,599 –> 00:03:23,040
بنابراین هدف نهایی فقط میخواستم
105
00:03:23,040 –> 00:03:24,799
آن را به شما نشان دهم و اکنون کاری که
106
00:03:24,799 –> 00:03:26,319
میخواهیم انجام دهیم این است که در اینجا وارد برخی از
107
00:03:26,319 –> 00:03:28,159
مراحل تنظیم شویم زیرا همانطور که اشاره کردم ما
108
00:03:28,159 –> 00:03:29,680
قصد نداریم از ابتدا برنامهنویسی پونگ را انجام دهیم.
109
00:03:29,680 –> 00:03:31,519
ما این کار را
110
00:03:31,519 –> 00:03:34,000
با اجرای pong شروع می کنیم و
111
00:03:34,000 –> 00:03:35,040
سپس به شما نشان می دهم که چگونه
112
00:03:35,040 –> 00:03:36,959
ai را برای آن پیاده سازی کنید، اگر می خواهید
113
00:03:36,959 –> 00:03:38,480
pong را از ابتدا کدنویسی کنید، من یک
114
00:03:38,480 –> 00:03:40,400
آموزش کامل در مورد نحوه انجام آن دارم. بنابراین من
115
00:03:40,400 –> 00:03:42,080
آن را در توضیحات پیوند می دهم، اما در حال حاضر
116
00:03:42,080 –> 00:03:43,599
می خواهم با کد شروع شروع
117
00:03:43,599 –> 00:03:45,200
کنم، بنابراین کاری که در واقع انجام می دهم این است که
118
00:03:45,200 –> 00:03:46,879
فقط یک پوشه جدید را در اینجا در مقابل
119
00:03:46,879 –> 00:03:48,239
کد باز کنم و سپس مراحل راه اندازی
120
00:03:48,239 –> 00:03:49,920
را با شما طی کنم. بنابراین من به تازگی یک
121
00:03:49,920 –> 00:03:52,080
پوشه جدید در vs code باز کرده ام که ویرایشگری است
122
00:03:52,080 –> 00:03:53,760
که می خواهم برای این ویدیو استفاده کنم،
123
00:03:53,760 –> 00:03:55,599
می توانید از هر چیزی که می خواهید استفاده کنید اکنون
124
00:03:55,599 –> 00:03:57,680
من این لینک github را نیز باز کرده ام، این
125
00:03:57,680 –> 00:03:59,040
در توضیحات خواهد بود، اما این
126
00:03:59,040 –> 00:04:01,360
کد شروع این
127
00:04:01,360 –> 00:04:03,280
پروژه و اجرای پنگ
128
00:04:03,280 –> 00:04:05,599
که ما از آن برای آموزش استفاده خواهیم کرد چیست ai با پس
129
00:04:05,599 –> 00:04:06,720
دوباره به این لینک بروید که در
130
00:04:06,720 –> 00:04:08,959
توضیحات آمده است و فقط اگر git را نصب کرده اید آن را کپی کنید
131
00:04:08,959 –> 00:04:10,959
و اگر git را نصب نکرده اید،
132
00:04:10,959 –> 00:04:12,000
کاری که می
133
00:04:12,000 –> 00:04:14,319
خواهید انجام دهید این است که با کلیک بر روی zip دانلود
134
00:04:14,319 –> 00:04:16,000
اینجا کلیک کنید. روی کد، کد را
135
00:04:16,000 –> 00:04:17,918
دانلود کنید و سپس پوشه zip
136
00:04:17,918 –> 00:04:20,160
را استخراج کنید و آن پوشه فشرده را باز کنید، اما
137
00:04:20,160 –> 00:04:21,519
اگر git دارید، میتوانید
138
00:04:21,519 –> 00:04:23,280
آدرس اینترنتی را کپی کنید و میتوانید مخزن را کلون
139
00:04:23,280 –> 00:04:25,120
کنید و این همان کاری است که من میخواهم انجام دهم
140
00:04:25,120 –> 00:04:26,639
. من می خواهم به کد vs بروم من
141
00:04:26,639 –> 00:04:28,639
ترمینال خود را باز دارم و فقط می خواهم
142
00:04:28,639 –> 00:04:31,040
git clone را تایپ کنم و سپس آدرس اینترنتی را در اینجا بچسبانم
143
00:04:31,040 –> 00:04:32,400
و همه آن
144
00:04:32,400 –> 00:04:34,479
فایل های داخل این دایرکتوری را به من می دهد و اکنون
145
00:04:34,479 –> 00:04:35,680
فقط می خواهم شروع به
146
00:04:35,680 –> 00:04:38,000
توضیح نحوه عملکرد این کد می کنیم، سپس ما یک
147
00:04:38,000 –> 00:04:40,400
نوع پیاده سازی اساسی از
148
00:04:40,400 –> 00:04:42,560
بازی پنگ ایجاد می کنیم تا بتوانیم آن را مشاهده کنیم
149
00:04:42,560 –> 00:04:44,080
و خودمان بازی را انجام دهیم، سپس
150
00:04:44,080 –> 00:04:46,320
شروع به نوشتن ai می کنیم
151
00:04:46,320 –> 00:04:47,919
تا اولین چیز کاری که ما باید انجام دهیم این
152
00:04:47,919 –> 00:04:50,400
است که در واقع چند ماژول را نصب کنیم، بنابراین در
153
00:04:50,400 –> 00:04:52,639
صورت باز کردن نیاز دارید ments.txt خواهید دید
154
00:04:52,639 –> 00:04:55,280
که ما به پایتون و pygame منظمی نیاز داریم، بنابراین
155
00:04:55,280 –> 00:04:57,120
اگر میدانید چگونه میتوانید فقط
156
00:04:57,120 –> 00:04:59,759
این فایل txt را در اینجا نصب کنید یا فقط میتوانید
157
00:04:59,759 –> 00:05:01,600
به خط فرمان خود بروید و pip
158
00:05:01,600 –> 00:05:03,759
install و سپس ماژولها را تایپ کنید تا
159
00:05:03,759 –> 00:05:06,000
اولین مورد قرار است پایتون منظمی باشد و
160
00:05:06,000 –> 00:05:07,440
بعد از آن بازی pi خواهد بود،
161
00:05:07,440 –> 00:05:09,039
اکنون من آنها را نصب کردهام، بنابراین
162
00:05:09,039 –> 00:05:10,240
میبینید که میگوید نیاز
163
00:05:10,240 –> 00:05:12,320
از قبل برآورده شده است، اما
164
00:05:12,320 –> 00:05:15,360
اکنون به
165
00:05:15,360 –> 00:05:16,960
دلایلی به آن پیپ، هم به پایتون و هم پایتون تمیز نیاز دارید. دستور
166
00:05:16,960 –> 00:05:19,280
برای شما کار نکرد، دستور pip3 را امتحان کنید اگر
167
00:05:19,280 –> 00:05:22,080
برای شما کار نکرد، python hyphen m
168
00:05:22,080 –> 00:05:24,320
pip را امتحان کنید و سپس نصب کنید و سپس دو
169
00:05:24,320 –> 00:05:26,080
ماژول را که در آنجا لیست شده است و اگر
170
00:05:26,080 –> 00:05:28,160
برای شما کار نکرد، python3 را امتحان کنید و
171
00:05:28,160 –> 00:05:29,600
اگر هیچ کدام را نداشتید. از آنها مثل همیشه برای شما کار میکنند،
172
00:05:29,600 –> 00:05:31,039
من دو ویدیو را روی صفحه میگذارم که به
173
00:05:31,039 –> 00:05:33,360
شما نشان میدهد چگونه آن دستور را درست کنید، بنابراین
174
00:05:33,360 –> 00:05:35,360
حالا که آن را کار میکنیم، اجازه
175
00:05:35,360 –> 00:05:37,199
دهید نگاهی به داخل این پوشه pong داشته
176
00:05:37,199 –> 00:05:39,360
باشیم زیرا پوشه pong در واقع این پوشه است.
177
00:05:39,360 –> 00:05:41,680
یک بسته پایتون که شامل همه
178
00:05:41,680 –> 00:05:44,240
چیز است شما باید pom ایجاد کنید، بنابراین
179
00:05:44,240 –> 00:05:46,639
در داخل اینجا ما توپ نقطه pi داریم،
180
00:05:46,639 –> 00:05:49,039
این به سادگی توپ را پیاده سازی می کند خوب، ما
181
00:05:49,039 –> 00:05:51,280
دست و پا زدن داریم، این یک پارو است که می
182
00:05:51,280 –> 00:05:53,840
دانید از دو پارو در بازی حوضچه ما استفاده می کنیم
183
00:05:53,840 –> 00:05:55,840
و ما game.pi داریم که کلاسی است
184
00:05:55,840 –> 00:05:57,120
که شما ‘قرار است با این رابط کاربری داشته باشید
185
00:05:57,120 –> 00:05:58,720
بنابراین در داخل این فایل می توانید ببینید که
186
00:05:58,720 –> 00:06:00,639
ما دو کلاس اصلی داریم که
187
00:06:00,639 –> 00:06:03,039
اطلاعات بازی را داریم و بازی را داریم اکنون
188
00:06:03,039 –> 00:06:04,880
کلاس اطلاعات بازی
189
00:06:04,880 –> 00:06:06,560
به ما برگردانده می شود یا حداقل نمونه
190
00:06:06,560 –> 00:06:08,240
ای از این کلاس به ما بازگردانده می شود.
191
00:06:08,240 –> 00:06:10,080
هر زمان که روش حلقه
192
00:06:10,080 –> 00:06:11,840
بازی را صدا زدیم به ما برگردانده می شود که در یک ثانیه در مورد آن صحبت خواهم کرد،
193
00:06:11,840 –> 00:06:13,280
اما این فقط اطلاعات بازی را به ما می دهد
194
00:06:13,280 –> 00:06:14,639
درست تعداد ضربه هایی که
195
00:06:14,639 –> 00:06:16,400
پدل سمت چپ دارد، و
196
00:06:16,400 –> 00:06:18,000
سپس امتیاز هر دو.
197
00:06:18,000 –> 00:06:19,840
دست و پا زدن چپ و راست و نحوه امتیاز دهی
198
00:06:19,840 –> 00:06:22,080
به این صورت است که اگر توپ را
199
00:06:22,080 –> 00:06:23,919
از طرف بازیکن مقابل بفرستید، یک امتیاز می
200
00:06:23,919 –> 00:06:25,520
گیرید، بنابراین اگر پارو سمت راست باشم، آن را به
201
00:06:25,520 –> 00:06:26,800
سمت چپ می زنم و آنها دست و
202
00:06:26,800 –> 00:06:28,880
پا زدن سمت راست را از دست می دهند. مسلماً ما می خواهیم امتیازی کسب
203
00:06:28,880 –> 00:06:30,560
کنیم همه این اطلاعات
204
00:06:30,560 –> 00:06:32,400
را بدانیم تا بتوانیم بفهمیم کدام ai
205
00:06:32,400 –> 00:06:34,319
عملکرد بهتری دارد و می توانیم با استفاده از هوش مصنوعی خود را آموزش دهیم.
206
00:06:34,319 –> 00:06:36,240
207
00:06:36,240 –> 00:06:38,479
208
00:06:38,479 –> 00:06:39,759
209
00:06:39,759 –> 00:06:41,280
لازم نیست
210
00:06:41,280 –> 00:06:42,960
بدانید که کد داخل اینجا چگونه
211
00:06:42,960 –> 00:06:44,800
کار می کند، فقط باید بدانید که چگونه
212
00:06:44,800 –> 00:06:46,800
بازی را با استفاده از کلاس شبیه سازی می کنید
213
00:06:46,800 –> 00:06:48,240
که من دقیقاً به شما نشان می دهم که چگونه
214
00:06:48,240 –> 00:06:50,000
این کار را انجام دهید، بنابراین اولین کاری که در اینجا انجام خواهیم داد
215
00:06:50,000 –> 00:06:51,919
مقداردهی اولیه است. یک مثال
216
00:06:51,919 –> 00:06:54,160
و ما این کار را با عبور دادن یک پنجره با
217
00:06:54,160 –> 00:06:56,160
عرض پنجره و ارتفاع پنجره انجام می دهیم،
218
00:06:56,160 –> 00:06:57,199
بسیار ساده است، این
219
00:06:57,199 –> 00:06:59,360
یک پنجره بازی pi خواهد بود و سپس
220
00:06:59,360 –> 00:07:01,759
در واقع بازی را برای
221
00:07:01,759 –> 00:07:03,440
ما می سازد، سپس یکسری روش خصوصی
222
00:07:03,440 –> 00:07:04,800
داریم که ما حتی لازم نیست به آنها نگاه کنید
223
00:07:04,800 –> 00:07:05,919
زیرا قرار نیست با آنها ارتباط
224
00:07:05,919 –> 00:07:06,880
برقرار کنیم
225
00:07:06,880 –> 00:07:09,039
و سپس قرعه کشی داریم اکنون قرعه کشی قرار
226
00:07:09,039 –> 00:07:10,560
است در واقع بازی را برای ما
227
00:07:10,560 –> 00:07:11,919
228
00:07:11,919 –> 00:07:13,599
ترسیم کند. شما فقط آن را نمی بینید تا به
229
00:07:13,599 –> 00:07:15,120
خودتان بستگی دارد اگر بخواهید آن را بکشید یا نه،
230
00:07:15,120 –> 00:07:16,240
و ممکن است
231
00:07:16,240 –> 00:07:18,639
نخواهید آن را بکشید، زیرا اگر دائماً نقاشی نمیکشید، آموزش دادن هوش مصنوعی سریعتر خواهد بود،
232
00:07:18,639 –> 00:07:20,479
233
00:07:20,479 –> 00:07:22,560
پس ما پدال حرکتی را بسیار آسان میکنیم، اما
234
00:07:22,560 –> 00:07:24,160
این به ما امکان میدهد پاروی چپ یا
235
00:07:24,160 –> 00:07:26,160
راست را حرکت دهیم. ما از سمت چپ درست عبور می
236
00:07:26,160 –> 00:07:27,759
کنیم، به این معنی که ما در حال حرکت دادن پاروی چپ هستیم اگر
237
00:07:27,759 –> 00:07:29,199
از سمت چپ رد شویم،
238
00:07:29,199 –> 00:07:30,720
پارو سمت راست را به سمت بالا حرکت می دهیم درست است، هر چیزی را که به سمت بالا به سمت بالا حرکت
239
00:07:30,720 –> 00:07:32,240
می
240
00:07:32,240 –> 00:07:33,440
کند، غلط است، آن را به سمت راست حرکت می دهیم
241
00:07:33,440 –> 00:07:34,639
و سپس آن را مطمئن میشویم که
242
00:07:34,639 –> 00:07:36,240
واقعاً میتوانیم آن را جابجا کنیم و
243
00:07:36,240 –> 00:07:38,319
اگر بتوانیم با
244
00:07:38,319 –> 00:07:40,560
موفقیت پارو را حرکت دهیم، درست است و
245
00:07:40,560 –> 00:07:41,840
در غیر این صورت، اگر
246
00:07:41,840 –> 00:07:43,360
میخواهید پارو را از روی صفحه خارج کنید، به عنوان مثال
247
00:07:43,360 –> 00:07:45,120
، اشتباه را نشان میدهد.
248
00:07:45,120 –> 00:07:46,720
نه، شما نمی توانید به آنجا بروید، بسیار
249
00:07:46,720 –> 00:07:48,160
خوب،
250
00:07:48,160 –> 00:07:50,560
ما حلقه داریم که یک حلقه بازی را اجرا می کند،
251
00:07:50,560 –> 00:07:52,400
بنابراین آنچه شما باید در اینجا انجام دهید تا
252
00:07:52,400 –> 00:07:54,560
بازی واقعاً اجرا شود این است که حلقه رویداد خود را ایجاد کنید
253
00:07:54,560 –> 00:07:56,160
که
254
00:07:56,160 –> 00:07:57,919
در اصل یک حلقه while است که در حال اجرا
255
00:07:57,919 –> 00:07:59,840
است و دائماً در حال فراخوانی است. این روش
256
00:07:59,840 –> 00:08:02,000
و در این روش، هر فریم
257
00:08:02,000 –> 00:08:04,080
اطلاعات بازی را به شما برمیگرداند
258
00:08:04,080 –> 00:08:05,919
که ضربههای پاروی
259
00:08:05,919 –> 00:08:07,360
چپ و راست و سپس
260
00:08:07,360 –> 00:08:09,039
امتیاز پارو چپ و راست خواهد بود، بنابراین در
261
00:08:09,039 –> 00:08:10,960
هر فریم بازی،
262
00:08:10,960 –> 00:08:12,879
همه چیز را میدانید. اطلاعات و شما می توانید
263
00:08:12,879 –> 00:08:15,120
با آن آنچه را که می خواهید در
264
00:08:15,120 –> 00:08:16,560
حلقه اصلی بازی خود انجام دهید، می توانید تصمیم بگیرید که چه زمانی
265
00:08:16,560 –> 00:08:18,240
بازی را به پایان برسانید، می توانید تصمیم بگیرید که آیا می خواهید
266
00:08:18,240 –> 00:08:19,919
ai دیگری را آموزش دهید اگر می خواهید به
267
00:08:19,919 –> 00:08:21,919
یک ai امتیاز بیشتری نسبت به دیگری بدهید.
268
00:08:21,919 –> 00:08:23,599
بعداً در مورد آن صحبت کنید،
269
00:08:23,599 –> 00:08:24,879
سپس ما ریست کردیم، بازنشانیهای کاملاً
270
00:08:24,879 –> 00:08:26,479
ساده کل بازی،
271
00:08:26,479 –> 00:08:28,400
خوب این کلاس بازی است که واقعاً
272
00:08:28,400 –> 00:08:30,639
تمام اطلاعاتی است که باید بدانید
273
00:08:30,639 –> 00:08:32,719
و آخرین چیزی که ما این فایل init.pi را داریم
274
00:08:32,719 –> 00:08:35,360
و این فقط میگوید from.gameimportgame
275
00:08:35,360 –> 00:08:37,839
به این معنی که وقتی این پنگ را وارد
276
00:08:37,839 –> 00:08:39,599
میکنم، حدس میزنم پکیج همان چیزی است که آن را مینامیم،
277
00:08:39,599 –> 00:08:41,360
سپس میتوانم مستقیماً
278
00:08:41,360 –> 00:08:43,760
کلاس بازی را وارد کنم و با آن شروع به کار کنم،
279
00:08:43,760 –> 00:08:46,800
خوب ادامه میدهیم config.txt این
280
00:08:46,800 –> 00:08:48,080
چیزی است که ما برای
281
00:08:48,080 –> 00:08:50,240
پیکربندی برای الگوری منظم ما
282
00:08:50,240 –> 00:08:51,680
در مورد همه این موارد صحبت کنید وقتی ما
283
00:08:51,680 –> 00:08:53,120
واقعاً neat را پیادهسازی میکنیم زیاد نگران آن نباشید
284
00:08:53,120 –> 00:08:54,640
285
00:08:54,640 –> 00:08:56,399
فعلاً ما main.pi داریم
286
00:08:56,399 –> 00:08:58,160
این کد تمام شده است بنابراین اگر فقط
287
00:08:58,160 –> 00:09:00,240
میخواهید ai را اجرا کنید مثل اینکه اهمیتی
288
00:09:00,240 –> 00:09:01,920
به رفتن ندارید. از طریق آموزش، می
289
00:09:01,920 –> 00:09:03,600
توانید این فایل را با فرض اینکه بازی پایتون و pi را نصب کرده اید اجرا کنید،
290
00:09:03,600 –> 00:09:06,080
291
00:09:06,080 –> 00:09:07,279
اما کاری که من در این ویدیو انجام خواهم داد
292
00:09:07,279 –> 00:09:09,120
، اساساً بازنویسی این فایل
293
00:09:09,120 –> 00:09:10,880
از ابتدا است، بنابراین ما در واقع
294
00:09:10,880 –> 00:09:12,480
همه این موارد را در اینجا درک می کنیم. و
295
00:09:12,480 –> 00:09:14,160
سپس این نظر سرصفحه اینجا فقط
296
00:09:14,160 –> 00:09:16,160
یکی از نمونههایی است که ما به
297
00:09:16,160 –> 00:09:17,920
نوعی به آن اشاره میکنیم یا اینکه من
298
00:09:17,920 –> 00:09:20,080
مقداری کد را از این فایل در اینجا
299
00:09:20,080 –> 00:09:21,040
دزدیدهام، بسیار خوب،
300
00:09:21,040 –> 00:09:22,959
بنابراین این اصل این
301
00:09:22,959 –> 00:09:25,040
کد شروع است که دوباره خیلی
302
00:09:25,040 –> 00:09:26,080
پیچیده نیست. مجبور نیستم همه چیز را
303
00:09:26,080 –> 00:09:28,240
در اینجا بفهمم، من فقط میخواستم
304
00:09:28,240 –> 00:09:30,399
توضیح مختصری در مورد آنچه اتفاق میافتد به شما بدهم
305
00:09:30,399 –> 00:09:31,760
تا وقتی شروع به نوشتن کد
306
00:09:31,760 –> 00:09:33,920
میکنم کمی منطقیتر باشد، بنابراین حالا بیایید در
307
00:09:33,920 –> 00:09:36,720
واقع یک بازی پایه پنگ را پیادهسازی کنیم، بنابراین
308
00:09:36,720 –> 00:09:38,880
بیایید از آن کلاس بازی استفاده کنیم. و فقط s
309
00:09:38,880 –> 00:09:40,399
چگونه میتوانیم پنل را بالا
310
00:09:40,399 –> 00:09:41,839
و پایین ببریم و با آن
311
00:09:41,839 –> 00:09:43,440
روشهای مختلف کار کنیم، سپس شروع به نوشتن ai میکنیم،
312
00:09:43,440 –> 00:09:46,480
بنابراین من یک فایل در اینجا ایجاد
313
00:09:46,480 –> 00:09:47,880
میکنم و این را
314
00:09:47,880 –> 00:09:50,399
tutorial.pi و داخل در اینجا
315
00:09:50,399 –> 00:09:52,720
میخواهم بگویم واردات بازی پی را وارد
316
00:09:52,720 –> 00:09:54,560
کنم و سپس میگویم از و
317
00:09:54,560 –> 00:09:56,399
این واردات پنگ خواهد بود
318
00:09:56,399 –> 00:09:58,720
و سپس میخواهم بازی را وارد
319
00:09:58,720 –> 00:10:00,560
کنم اکنون میتوانم این کار را انجام دهم زیرا پنگ که
320
00:10:00,560 –> 00:10:02,640
آیا پوشه اینجا یک بسته است
321
00:10:02,640 –> 00:10:04,880
زیرا فایل init.pi را در داخل آن دارد که
322
00:10:04,880 –> 00:10:06,880
به من امکان می دهد مستقیماً هر چیزی را
323
00:10:06,880 –> 00:10:08,880
که وارد می کند وارد کنم و از آنجایی که بازی را وارد می کند
324
00:10:08,880 –> 00:10:11,360
من بازی را همین الان دریافت می کنم مطمئن
325
00:10:11,360 –> 00:10:13,519
شوید که فایل tutorial.pi خود را در داخل آن قرار داده اید.
326
00:10:13,519 –> 00:10:16,480
پوشه منظم پایتون و
327
00:10:16,480 –> 00:10:18,720
داخل پوشه pong نیست،
328
00:10:18,720 –> 00:10:20,320
حالا که این را داریم، میخواهیم
329
00:10:20,320 –> 00:10:22,079
یک پنجره بازی پایتون راهاندازی کنیم، پنجره جایی است
330
00:10:22,079 –> 00:10:23,440
که میخواهیم همه این موارد را ترسیم کنیم
331
00:10:23,440 –> 00:10:25,200
و آنچه را که باید به آن منتقل کنیم.
332
00:10:25,200 –> 00:10:27,519
کلاس بازی بنابراین میخواهم بگویم پنجره
333
00:10:27,519 –> 00:10:29,560
برابر با
334
00:10:29,560 –> 00:10:31,920
حالت زیر خط pygame.display.set است و
335
00:10:31,920 –> 00:10:33,440
سپس داخل اینجا من باید یک
336
00:10:33,440 –> 00:10:35,040
عرض و یک ارتفاع را برای پنجره پاس کنم، بنابراین
337
00:10:35,040 –> 00:10:36,800
فقط عرض می کنم
338
00:10:36,800 –> 00:10:38,720
ارتفاع کاما برابر است با و سپس
339
00:10:38,720 –> 00:10:41,760
می رویم 700 500. حالا مطمئن شوید که
340
00:10:41,760 –> 00:10:43,040
هر عرض و ارتفاعی
341
00:10:43,040 –> 00:10:44,560
که باشد، شما تنظیم کنید هنگام تمرین ai همان حالت را حفظ می کنید
342
00:10:44,560 –> 00:10:46,640
زیرا
343
00:10:46,640 –> 00:10:48,240
اگر عرض و ارتفاع را تغییر دهید
344
00:10:48,240 –> 00:10:50,399
بر عملکرد ai تأثیر می گذارد،
345
00:10:50,399 –> 00:10:51,760
بنابراین فقط از عرض و
346
00:10:51,760 –> 00:10:53,360
ارتفاعی که در حال حاضر انتخاب می کنید مطمئن شوید. خوب
347
00:10:53,360 –> 00:10:54,240
است و اینکه شما
348
00:10:54,240 –> 00:10:56,079
در اواسط تمرین تغییر
349
00:10:56,079 –> 00:10:57,279
نمی کنید زیرا اگر بخواهید تغییر دهید
350
00:10:57,279 –> 00:10:58,800
همه چیز به هم
351
00:10:58,800 –> 00:11:01,120
می ریزد فقط می خواستم توجه داشته باشید که عرض
352
00:11:01,120 –> 00:11:02,800
و ارتفاع را از اینجا عبور می دهیم بسیار
353
00:11:02,800 –> 00:11:04,399
خوب اکنون که ما یک پنجره و یک
354
00:11:04,399 –> 00:11:06,079
عرض و یک ارتفاع داریم، میتوانیم کلاس بازی را مقداردهی اولیه کنیم،
355
00:11:06,079 –> 00:11:08,399
بنابراین میخواهم بگویم بازی
356
00:11:08,399 –> 00:11:10,399
برابر است با بازی و من میخواهم از
357
00:11:10,399 –> 00:11:13,519
پنجرهام عرض و ارتفاع من را رد کنم، حالا شما
358
00:11:13,519 –> 00:11:14,880
میخواهید ببینید اجرای بازی چقدر آسان است،
359
00:11:14,880 –> 00:11:16,640
کاری که می توانم انجام دهم این است
360
00:11:16,640 –> 00:11:18,160
که یک حلقه while در اینجا ایجاد کنم تا بتوانم بگویم while
361
00:11:18,160 –> 00:11:20,079
true f یا به عنوان مثال، اگرچه من
362
00:11:20,079 –> 00:11:21,760
واقعاً باید یک متغیر بسازم، بنابراین می گویم
363
00:11:21,760 –> 00:11:23,279
run برابر است با true
364
00:11:23,279 –> 00:11:25,200
و سپس در حین اجرا، می گویم
365
00:11:25,200 –> 00:11:26,079
366
00:11:26,079 –> 00:11:27,519
حلقه نقطه بازی
367
00:11:27,519 –> 00:11:29,040
و سپس
368
00:11:29,040 –> 00:11:31,200
ترسیم نقطه بازی و سپس می خواهم بگویم
369
00:11:31,200 –> 00:11:33,360
نمایش نقطه
370
00:11:33,360 –> 00:11:34,959
بازی pi آیا این
371
00:11:34,959 –> 00:11:37,040
بهروزرسانی نقطهای
372
00:11:37,040 –> 00:11:38,880
اینجاست و در واقع بازی pi را
373
00:11:38,880 –> 00:11:40,800
برای ما اجرا میکند که به معنای واقعی کلمه تمام چیزی است که اکنون به
374
00:11:40,800 –> 00:11:42,079
آن نیاز داریم.
375
00:11:42,079 –> 00:11:43,839
376
00:11:43,839 –> 00:11:45,360
377
00:11:45,360 –> 00:11:46,640
در مورد خوب، من می خواهم بگویم
378
00:11:46,640 –> 00:11:48,399
game.loop این فقط به
379
00:11:48,399 –> 00:11:50,560
طور مداوم حلقه بازی را برای من
380
00:11:50,560 –> 00:11:52,720
در داخل اینجا اجرا می کند، من می گویم game.draw بنابراین
381
00:11:52,720 –> 00:11:54,079
آن را ترسیم می کند و سپس
382
00:11:54,079 –> 00:11:55,440
صفحه نمایش خود را به روز می کنم تا من
383
00:11:55,440 –> 00:11:56,959
همه چیز را ببینید اگر نمایشگر
384
00:11:56,959 –> 00:11:58,160
را به روز نکنم، در واقع نشان نمی دهد
385
00:11:58,160 –> 00:12:00,160
که در حال ترسیم است، اما همانطور که گفتم ما
386
00:12:00,160 –> 00:12:01,760
به راهی برای خروج نیاز داریم، بنابراین کاری که می
387
00:12:01,760 –> 00:12:03,519
خواهم انجام دهم این است که برای
388
00:12:03,519 –> 00:12:04,560
رویداد
389
00:12:04,560 –> 00:12:06,240
در pygame
390
00:12:06,240 –> 00:12:08,240
dot event dot get
391
00:12:08,240 –> 00:12:11,440
و من میخواهم بگویم که آیا نوع نقطه رویداد
392
00:12:11,440 –> 00:12:13,360
برابر است با نقطه خروج از بازی pi، به این
393
00:12:13,360 –> 00:12:15,360
معنی که دکمه قرمز x را در
394
00:12:15,360 –> 00:12:16,959
پنجره بازی pi که در یک ثانیه آن را خواهید دید،
395
00:12:16,959 –> 00:12:19,519
سپس من فقط میخواهم بگویم run برابر است با غلط
396
00:12:19,519 –> 00:12:21,519
397
00:12:21,519 –> 00:12:22,480
398
00:12:22,480 –> 00:12:24,320
399
00:12:24,320 –> 00:12:26,480
400
00:12:26,480 –> 00:12:28,240
پنجره بسته می شود،
401
00:12:28,240 –> 00:12:29,680
این به معنای واقعی کلمه تمام چیزی است که ما برای اجرای
402
00:12:29,680 –> 00:12:30,959
بازی پنگ نیاز داریم و البته شما به راهی
403
00:12:30,959 –> 00:12:32,560
برای حرکت دادن پاروها نیاز دارید، اما بیایید همین الان این را اجرا کنیم
404
00:12:32,560 –> 00:12:34,800
و ببینیم آیا درست کار
405
00:12:34,800 –> 00:12:36,320
می کند، بنابراین من می خواهم بگویم که در واقع من
406
00:12:36,320 –> 00:12:37,360
این کار را نمی کنم. باید کنسول را بالا بیاورم،
407
00:12:37,360 –> 00:12:38,560
فقط میتوانم روی run کلیک کنم
408
00:12:38,560 –> 00:12:40,320
و ببینیم
409
00:12:40,320 –> 00:12:42,800
و متوجه شویم که ما بازی پیاده را داریم
410
00:12:42,800 –> 00:12:44,079
و حالا میروید خیلی
411
00:12:44,079 –> 00:12:46,240
سریع پیش میرود، فقط به این دلیل که من در
412
00:12:46,240 –> 00:12:48,240
واقع سرعت اجرای حلقه را محدود نکردهام،
413
00:12:48,240 –> 00:12:49,920
نشان خواهم داد. شما چگونه میتوانیم آن را محدود
414
00:12:49,920 –> 00:12:51,680
کنیم، اما به این صورت است که از بازی کف دست استفاده میکنید
415
00:12:51,680 –> 00:12:52,959
و سپس اگر میخواهم
416
00:12:52,959 –> 00:12:54,639
دست و
417
00:12:54,639 –> 00:12:56,399
پا را حرکت دهم، فعلاً باید از آن روش حرکت پارو استفاده کنم، هرچند به
418
00:12:56,399 –> 00:12:58,720
شما نشان خواهم داد که چگونه میتوانیم سرعت را محدود کنیم،
419
00:12:58,720 –> 00:13:00,320
بنابراین ما می توانیم انجام دهیم این است که یک ساعت بسازیم
420
00:13:00,320 –> 00:13:01,480
مثلاً
421
00:13:01,480 –> 00:13:04,240
pygame.time.clock و سپس کاری که من
422
00:13:04,240 –> 00:13:05,440
انجام خواهم داد
423
00:13:05,440 –> 00:13:07,839
g o در اینجا وارد شوید و بگویید clock
424
00:13:07,839 –> 00:13:10,560
dot تیک بزنید و حداکثر
425
00:13:10,560 –> 00:13:12,160
تعداد فریم هایی را که می خواهید در هر
426
00:13:12,160 –> 00:13:14,399
ثانیه رندر کنید پاس می کنید، بنابراین در این مورد من می گویم 60 به
427
00:13:14,399 –> 00:13:15,680
این معنی که حلقه while
428
00:13:15,680 –> 00:13:18,160
محدود به اجرای 60 بار در ثانیه خواهد بود
429
00:13:18,160 –> 00:13:19,680
که دقیقاً همان چیزی است که take برای ما
430
00:13:19,680 –> 00:13:21,040
بسیار خوب است، بنابراین شما فقط آن را داخل
431
00:13:21,040 –> 00:13:23,200
حلقه قرار دهید و زمان را محدود می کند،
432
00:13:23,200 –> 00:13:24,480
اجازه دهید این را اجرا کنیم
433
00:13:24,480 –> 00:13:26,399
و سپس متوجه شویم که اکنون یک توپ
434
00:13:26,399 –> 00:13:28,639
با سرعت معقول حرکت می کند، خوب است و
435
00:13:28,639 –> 00:13:30,800
سپس آن امتیاز را برای ما ترسیم می کند،
436
00:13:30,800 –> 00:13:31,920
چند چیز دیگر که ما میتوانیم در
437
00:13:31,920 –> 00:13:33,760
اینجا نگاه کنیم وقتی قرعهکشی
438
00:13:33,760 –> 00:13:36,320
میکنیم، این گزینه را داریم که دو چیز را پاس
439
00:13:36,320 –> 00:13:37,680
کنیم، بیایید به اینجا برگردیم و به شما نشان میدهم،
440
00:13:37,680 –> 00:13:38,560
441
00:13:38,560 –> 00:13:41,440
بنابراین با نگاه کردن به قرعهکشی، ما این گزینه را داریم که
442
00:13:41,440 –> 00:13:44,160
امتیاز قرعهکشی را بگذرانیم و بازدیدها را قرعهکشی کنیم، بنابراین به
443
00:13:44,160 –> 00:13:46,240
طور پیشفرض یک امتیاز را بکشیم. بازدیدهای واقعی قرعه کشی
444
00:13:46,240 –> 00:13:47,760
اشتباه است و کار آنها کاملاً ساده است
445
00:13:47,760 –> 00:13:48,800
، اما اگر نخواهم امتیاز را
446
00:13:48,800 –> 00:13:50,480
رسم کنم، می توانم از این نمره غلط عبور کنم و
447
00:13:50,480 –> 00:13:52,000
اگر بخواهم تعداد ضربه هایی را که می گذرانم رسم کنم
448
00:13:52,000 –> 00:13:53,680
درست است، بنابراین شاید ما این را تغییر
449
00:13:53,680 –> 00:13:55,440
دهیم. و فقط
450
00:13:55,440 –> 00:13:58,160
دروغ و درست را بگویید و اکنون به جای اینکه
451
00:13:58,160 –> 00:13:59,519
w را به ما نشان دهد کلاه امتیاز این است که
452
00:13:59,519 –> 00:14:01,199
تعداد ضربات ترکیبی بین دو بازیکن را به ما نشان می دهد
453
00:14:01,199 –> 00:14:03,440
خوب است، بنابراین می
454
00:14:03,440 –> 00:14:04,880
دانید متأسفانه آنها
455
00:14:04,880 –> 00:14:06,480
هنوز توپ را نزده اند، یک نکته کوچک
456
00:14:06,480 –> 00:14:07,839
در اینجا نیز باید به آن توجه شود این است که احتمالاً خواهید دید
457
00:14:07,839 –> 00:14:09,680
که وقتی توپ از وسط شروع می شود،
458
00:14:09,680 –> 00:14:11,360
به نوعی تصادفی است در جهتی
459
00:14:11,360 –> 00:14:13,360
که در نظر گرفته شده است، بنابراین من آن را دارم،
460
00:14:13,360 –> 00:14:15,040
بنابراین به طور تصادفی با یک زاویه خفیف خارج می شود، به
461
00:14:15,040 –> 00:14:18,240
طوری که هوش مصنوعی نمی تواند فقط
462
00:14:18,240 –> 00:14:20,000
بگوید در وسط صفحه بنشین و
463
00:14:20,000 –> 00:14:21,680
مدام به آن ضربه بزند. توپ باید
464
00:14:21,680 –> 00:14:23,839
یاد بگیرد که به سمت توپ حرکت کند،
465
00:14:23,839 –> 00:14:25,440
این کاری است که من در کلاس بازی انجام
466
00:14:25,440 –> 00:14:26,800
دادم و می خواهم به آن اشاره کنم، به هر حال ببینم
467
00:14:26,800 –> 00:14:28,720
ضربه ها در اینجا ردیابی می شوند، همه چیز
468
00:14:28,720 –> 00:14:30,320
خوب است، ما اکنون تقریباً درک می کنیم که
469
00:14:30,320 –> 00:14:32,000
چگونه از این کلاس استفاده کنیم. این کار این
470
00:14:32,000 –> 00:14:34,160
است که به شما نشان میدهیم چگونه میتوانیم پانل را
471
00:14:34,160 –> 00:14:35,760
با کلیدهای جهتدار حرکت دهیم و سپس ساختن ai را شروع میکنیم،
472
00:14:35,760 –> 00:14:37,199
473
00:14:37,199 –> 00:14:40,639
بنابراین بیایید کارهای زیر را انجام دهیم، مثلاً کلیدهایی را
474
00:14:40,639 –> 00:14:42,000
که میخواهیم تمام کلیدهایی را که
475
00:14:42,000 –> 00:14:43,760
کاربر فشار داده است را انجام دهیم. بگو
476
00:14:43,760 –> 00:14:45,240
keys برابر با
477
00:14:45,240 –> 00:14:46,959
pygame.key است. getunderscore و این
478
00:14:46,959 –> 00:14:48,959
قرار است فشار داده شود، این
479
00:14:48,959 –> 00:14:50,560
لیستی از تمام کلیدهایی را که
480
00:14:50,560 –> 00:14:52,160
کاربر فشار داده است به ما می دهد، بنابراین من فقط می توانم بررسی کنم که آیا
481
00:14:52,160 –> 00:14:53,519
آنها فشار داده اند یا خیر، اجازه دهید
482
00:14:53,519 –> 00:14:55,360
با کلید w و s برویم و سپس می توانم
483
00:14:55,360 –> 00:14:57,120
پانل را بر این اساس حرکت دهید، بنابراین
484
00:14:57,120 –> 00:15:00,000
میگوییم اگر کلیدها و من میخواهم پای
485
00:15:00,000 –> 00:15:02,639
بازی را با نقطه k زیرخط پاس کنم و سپس کلیدی که
486
00:15:02,639 –> 00:15:04,160
میخواهم بررسی کنم w است،
487
00:15:04,160 –> 00:15:05,760
بنابراین این همان چیزی است که میدهم اگر میخواهید انجام دهید، اگر میخواهید این کار
488
00:15:05,760 –> 00:15:08,000
را انجام دهید، درست انجام میدهید. میخواهید این کار را انجام دهید
489
00:15:08,000 –> 00:15:10,160
، در واقع k زیرخط به بالا است، اگر
490
00:15:10,160 –> 00:15:12,000
میخواهید پایین، با همه حروف بزرگ و
491
00:15:12,000 –> 00:15:13,760
زیرخط پایین است، میتوانید آنها را
492
00:15:13,760 –> 00:15:15,120
از وبسایت بازی pi جستجو کنید، اما بسیار
493
00:15:15,120 –> 00:15:17,040
ساده است و سپس کاری که من انجام خواهم داد این
494
00:15:17,040 –> 00:15:19,839
است که بگویم نقطه بازی حرکت
495
00:15:19,839 –> 00:15:21,680
پدال خوب است و سپس چه پارویی آیا
496
00:15:21,680 –> 00:15:23,120
میخواهیم حرکت کنیم میخواهیم پاروی چپ را حرکت
497
00:15:23,120 –> 00:15:25,199
دهیم، بنابراین فرض کنیم سمت چپ برابر با true است و
498
00:15:25,199 –> 00:15:26,959
من میخواهم وقتی w را فشار میدهم به سمت بالا حرکت کنم،
499
00:15:26,959 –> 00:15:28,079
بنابراین میگویم بالا
500
00:15:28,079 –> 00:15:30,639
برابر است با سفر خوب است و سپس میتوانیم
501
00:15:30,639 –> 00:15:32,240
این را کپی کنیم
502
00:15:32,240 –> 00:15:33,680
و این را در اینجا قرار دهید
503
00:15:33,680 –> 00:15:36,160
و حالا می گوییم اگر کلید pi game.k
504
00:15:36,160 –> 00:15:38,720
زیرخط s است زیرا خوب این زیر w است
505
00:15:38,720 –> 00:15:40,399
پس می گوییم سمت چپ درست است خوب است، اما به سمت
506
00:15:40,399 –> 00:15:41,920
بالا نادرست خواهد بود
507
00:15:41,920 –> 00:15:43,519
خوب حالا این به ما امکان می دهد
508
00:15:43,519 –> 00:15:47,040
دست و پا را به سمت چپ حرکت دهیم، بنابراین بیایید کد را اجرا کنیم
509
00:15:47,040 –> 00:15:48,639
و ببینیم چه چیزی به دست می آوریم و متوجه می
510
00:15:48,639 –> 00:15:50,560
شویم که اگر s و w را حرکت دهم، اکنون می توانم
511
00:15:50,560 –> 00:15:52,000
پارو چپ را حرکت دهم و اگر
512
00:15:52,000 –> 00:15:53,519
شاید میتوانید کلیدهای جهتنمای بالا را
513
00:15:53,519 –> 00:15:55,360
برای پانل سمت راست پیادهسازی کنید که به همین راحتی
514
00:15:55,360 –> 00:15:57,440
است و آخرین چیزی که باید به آن نگاه کنید
515
00:15:57,440 –> 00:16:00,560
این است که اگر کاری انجام دهم اطلاعات بازی
516
00:16:00,560 –> 00:16:01,759
برابر با
517
00:16:01,759 –> 00:16:02,880
این است
518
00:16:02,880 –> 00:16:05,519
، میتوانم برای مثال بازی را چاپ کنم.
519
00:16:05,519 –> 00:16:06,560
520
00:16:06,560 –> 00:16:09,040
نقطه اطلاعات و سپس بیایید به امتیاز سمت چپ برویم
521
00:16:09,040 –> 00:16:11,600
و نقطه اطلاعات
522
00:16:11,600 –> 00:16:13,519
بازی را به امتیاز سمت راست بریم تا کلاس اطلاعات بازی دوباره
523
00:16:13,519 –> 00:16:15,680
امتیاز سمت چپ داشته باشد امتیاز چپ ضربه راست ضربه بزند
524
00:16:15,680 –> 00:16:17,040
بنابراین از این داده ها استفاده می کنیم تا بفهمیم چه
525
00:16:17,040 –> 00:16:18,720
زمانی می خواهیم بازی را به پایان برسانیم و چگونه بازی را به پایان برسانیم.
526
00:16:18,720 –> 00:16:20,480
خوب بازیکنان این کار را انجام می دهند، من فقط می خواهم
527
00:16:20,480 –> 00:16:21,759
به شما نشان دهم که می توانم این را پرینت
528
00:16:21,759 –> 00:16:23,920
529
00:16:23,920 –> 00:16:25,839
530
00:16:25,839 –> 00:16:27,759
531
00:16:27,759 –> 00:16:29,360
بگیرم و بیایید کنسول را به سمت بالا ببریم و متوجه شویم که دائماً صفر می شویم و اجازه می دهیم او گل بزند و سپس ما صفر و یک را می گیریم.
532
00:16:29,360 –> 00:16:30,880
533
00:16:30,880 –> 00:16:32,880
خوب است، بنابراین اکنون که همه این کارها را انجام دادیم،
534
00:16:32,880 –> 00:16:33,759
می
535
00:16:33,759 –> 00:16:35,920
خواهم ساخت را شروع کنم
536
00:16:35,920 –> 00:16:38,000
من میخواهم کلاسی بسازم
537
00:16:38,000 –> 00:16:39,440
که چند روش مختلف داشته باشد،
538
00:16:39,440 –> 00:16:41,279
روش اول ممکن است چیزی شبیه
539
00:16:41,279 –> 00:16:43,839
train ai باشد، روش دیگر ممکن است تست ai باشد
540
00:16:43,839 –> 00:16:45,199
درست است که من به چند چیز مختلف نیاز دارم و
541
00:16:45,199 –> 00:16:46,800
منطقی است. برای قرار دادن همه اینها در یک
542
00:16:46,800 –> 00:16:48,720
کلاس، پس بیایید جلو برویم و این کار را انجام دهیم، بنابراین
543
00:16:48,720 –> 00:16:50,320
من فقط می خواهم یک کلاس در اینجا بسازم،
544
00:16:50,320 –> 00:16:52,240
بیایید آن را در بالا انجام دهیم و فرض کنید
545
00:16:52,240 –> 00:16:53,360
546
00:16:53,360 –> 00:16:55,440
کلاس آن را بازی پنگ می نامم و سپس
547
00:16:55,440 –> 00:16:57,120
یک init تعریف می کنیم
548
00:16:57,120 –> 00:16:59,440
و در init اجازه دهید فقط میکروفون
549
00:16:59,440 –> 00:17:02,560
را کمی نزدیکتر کنم
550
00:17:02,560 –> 00:17:05,119
، عرض و ارتفاع را در یک پنجره می گیریم و
551
00:17:05,119 –> 00:17:06,720
یک بازی را مقداردهی اولیه می کنیم، بنابراین کاری که می خواهم
552
00:17:06,720 –> 00:17:10,959
انجام دهم این است که بگویم بازی اینجا بیایید این را کپی
553
00:17:10,959 –> 00:17:13,439
کنیم برابر است. به آن، اما ما می گوییم
554
00:17:13,439 –> 00:17:15,760
self.game برابر است با پنجره بازی با ارتفاع، بنابراین
555
00:17:15,760 –> 00:17:18,000
اکنون هر نمونه بازی پنگ
556
00:17:18,000 –> 00:17:20,240
بازی خاص خود را خواهد داشت و سپس در داخل اینجا من
557
00:17:20,240 –> 00:17:22,319
فقط می خواهم توپ و
558
00:17:22,319 –> 00:17:24,640
همچنین پارو چپ و راست را از آن بگیرم. بازی من،
559
00:17:24,640 –> 00:17:26,640
بنابراین اگر من به بازی اینجا بروم،
560
00:17:26,640 –> 00:17:28,480
می توانید ببینید که در init
561
00:17:28,480 –> 00:17:31,039
ما یک دست و پا زدن سمت راست و
562
00:17:31,039 –> 00:17:32,960
توپ داریم، حالا من می خواهم
563
00:17:32,960 –> 00:17:34,640
محل قرارگیری توپ در سمت چپ و
564
00:17:34,640 –> 00:17:36,480
راست دست و پا زدن وقتی که من واقعاً
565
00:17:36,480 –> 00:17:38,400
هوش مصنوعی را طراحی میکنم، بنابراین میخواهم آن چیزهایی را بدست بیاورم
566
00:17:38,400 –> 00:17:41,440
که میخواهم بگویم پارو چپ خود نقطه
567
00:17:41,440 –> 00:17:44,320
برابر است با
568
00:17:44,320 –> 00:17:47,520
بازی نقطه خود نقطه دست و پا زدن چپ
569
00:17:47,520 –> 00:17:49,120
و سپس self.right pal برابر با
570
00:17:49,120 –> 00:17:50,640
self.game.rightpaddle
571
00:17:50,640 –> 00:17:53,039
و سپس
572
00:17:53,039 –> 00:17:55,520
self.ball برابر با self.game.ball است خوب
573
00:17:55,520 –> 00:17:57,120
حالا که همه اینها را داریم،
574
00:17:57,120 –> 00:18:00,000
بیایید یک روش بسازیم و فقط این تست را انجام دهیم
575
00:18:00,000 –> 00:18:01,039
576
00:18:01,039 –> 00:18:02,400
و فعلاً ما “فقط قصد دارم
577
00:18:02,400 –> 00:18:04,000
خود را دریافت کنم و من فقط می خواهم
578
00:18:04,000 –> 00:18:05,360
همه کدهایی را که در اینجا قرار داده ام اجرا کنم، فقط برای
579
00:18:05,360 –> 00:18:07,039
اینکه این کد را هدر ندهیم،
580
00:18:07,039 –> 00:18:08,880
بیایید همه آن را در اینجا قرار
581
00:18:08,880 –> 00:18:11,440
دهیم، خوب بیایید همه اینها را به جلو نشان دهیم و
582
00:18:11,440 –> 00:18:12,960
اکنون روشی داریم که در واقع به
583
00:18:12,960 –> 00:18:14,880
ما امکان میدهد بازی را آزمایش کنیم و بعداً
584
00:18:14,880 –> 00:18:16,799
آن را طوری انجام میدهیم که یک ai را در اینجا پاس کنیم و
585
00:18:16,799 –> 00:18:18,559
در واقع از ai برای بازی
586
00:18:18,559 –> 00:18:20,320
با
587
00:18:20,320 –> 00:18:22,000
ما استفاده میکند.
588
00:18:22,000 –> 00:18:23,760
بنابراین اکنون که همه این کارها را انجام
589
00:18:23,760 –> 00:18:25,679
دادیم، باید در مورد نیت صحبت کنیم، زیرا در
590
00:18:25,679 –> 00:18:27,840
واقع شروع به استفاده از نظافت به
591
00:18:27,840 –> 00:18:29,840
ول می کنیم. من یک هوش مصنوعی را آموزش میدهم و باید
592
00:18:29,840 –> 00:18:31,360
بفهمیم که چگونه منظم کار میکند و چیست
593
00:18:31,360 –> 00:18:33,039
، بنابراین اجازه دهید از روی تخته وایت برد بپرم
594
00:18:33,039 –> 00:18:34,559
، کمی توضیح میدهیم سپس
595
00:18:34,559 –> 00:18:36,160
شروع به اجرای آن میکنیم تا من
596
00:18:36,160 –> 00:18:37,360
روی تخته سفید باشم و من شروع به
597
00:18:37,360 –> 00:18:39,360
توضیح برای شما میکنم که اکنون مرتب
598
00:18:39,360 –> 00:18:42,080
تکامل عصبی توپولوژیهای تقویتشده است
599
00:18:42,080 –> 00:18:43,679
و این همان چیزی است که به عنوان یک الگوریتم ژنتیک شناخته میشود،
600
00:18:43,679 –> 00:18:46,240
اکنون یک الگوریتم ژنتیک
601
00:18:46,240 –> 00:18:48,400
از تاریخ بشر و
602
00:18:48,400 –> 00:18:50,640
انتخاب طبیعی الهام میگیرد و اساساً
603
00:18:50,640 –> 00:18:53,039
چندین نسل از آنچه را که ما
604
00:18:53,039 –> 00:18:55,200
ژنوم مینامیم تولید میکند. کمی
605
00:18:55,200 –> 00:18:56,559
گیج کننده است، قصد دارم این را عمیق تر توضیح دهم،
606
00:18:56,559 –> 00:18:58,559
اما قبل از اینکه به آن بپردازم، فقط
607
00:18:58,559 –> 00:19:00,640
می خواهم خلاصه ای سریع در مورد
608
00:19:00,640 –> 00:19:03,120
شبکه های عصبی و نحوه طراحی یک
609
00:19:03,120 –> 00:19:04,720
شبکه عصبی معمولی به شما ارائه دهم، زیرا مرتب به نوعی
610
00:19:04,720 –> 00:19:06,240
611
00:19:06,240 –> 00:19:07,520
پیشرفته است. حتی بدانید که آن را
612
00:19:07,520 –> 00:19:09,919
لایه روی شبکه های عصبی چه می نامید، بنابراین زمانی که
613
00:19:09,919 –> 00:19:12,000
ما در حال طراحی یک شبکه عصبی هستیم، کاری که
614
00:19:12,000 –> 00:19:13,600
می خواهیم انجام دهیم این است که می خواهیم برخی از
615
00:19:13,600 –> 00:19:15,039
ورودی ها را به آن تغذیه کنیم، سپس می خواهیم چند
616
00:19:15,039 –> 00:19:16,799
خروجی دریافت کنیم، اکنون باید تعیین کنیم که
617
00:19:16,799 –> 00:19:18,320
چند عدد ورودی خروجی هایی که قرار است داشته باشیم و چه
618
00:19:18,320 –> 00:19:20,160
تعداد خروجی و چه ورودی هایی
619
00:19:20,160 –> 00:19:21,600
برای تغذیه به شبکه عصبی منطقی خواهد بود،
620
00:19:21,600 –> 00:19:23,840
بنابراین ما در مورد بازی پنگ خود صحبت می کنیم.
621
00:19:23,840 –> 00:19:25,520
622
00:19:25,520 –> 00:19:28,480
623
00:19:28,480 –> 00:19:30,400
توپ در حال حاضر انواع مختلفی از
624
00:19:30,400 –> 00:19:32,160
ورودیها وجود دارد که میتوانیم آنها را به یک
625
00:19:32,160 –> 00:19:34,880
شبکه عصبی وارد کنیم تا سعی کنیم دست و پا را به حرکت درآوریم،
626
00:19:34,880 –> 00:19:36,080
اما اولین چیزی که احتمالاً باید
627
00:19:36,080 –> 00:19:37,679
تعیین کنیم این است که میخواهیم این
628
00:19:37,679 –> 00:19:39,840
شبکه عصبی به ما بگوید
629
00:19:39,840 –> 00:19:42,160
خروجی چیست. خوب بودن چیزی که میخواهیم
630
00:19:42,160 –> 00:19:43,919
شبکه عصبی به ما بگوید این است که اگر
631
00:19:43,919 –> 00:19:45,840
در مورد آن صحبت میکنیم، بگوییم که دست و پا زدن سمت چپ این
632
00:19:45,840 –> 00:19:48,080
است که آیا باید پارو را به سمت بالا حرکت
633
00:19:48,080 –> 00:19:49,440
دهیم یا اینکه فقط باید
634
00:19:49,440 –> 00:19:51,120
پارو را در همان مکان نگه داریم که
635
00:19:51,120 –> 00:19:52,480
واقعاً برای ما مهم است. در مورد این چیزی است که ما
636
00:19:52,480 –> 00:19:54,720
می خواهیم از شبکه بدانیم،
637
00:19:54,720 –> 00:19:57,120
بنابراین خروجی ما به سمت پایین می رود یا
638
00:19:57,120 –> 00:19:59,039
اکنون ثابت می ماند تا سعی کنیم شمع
639
00:19:59,039 –> 00:20:01,520
را پایین بیاوریم یا ثابت بمانیم چه ورودی
640
00:20:01,520 –> 00:20:03,520
باید شبکه عصبی را به خوبی تغذیه کنیم.
641
00:20:03,520 –> 00:20:04,799
نیاز به
642
00:20:04,799 –> 00:20:07,039
دانستن مکان n از پارو در حال حاضر در
643
00:20:07,039 –> 00:20:08,720
بازی pi، مکان گوشه سمت چپ بالا است،
644
00:20:08,720 –> 00:20:11,120
بنابراین در این مورد
645
00:20:11,120 –> 00:20:13,679
، y را
646
00:20:13,679 –> 00:20:15,280
به شبکه عصبی
647
00:20:15,280 –> 00:20:17,120
منتقل میکنیم، دلیل اینکه x را پاس نمیکنم این است که x است.
648
00:20:17,120 –> 00:20:18,720
ثابت خواهد بود و شما نمی خواهید
649
00:20:18,720 –> 00:20:20,559
هیچ مقدار ثابتی را به یک شبکه عصبی ارسال
650
00:20:20,559 –> 00:20:22,240
کنید، فقط لازم نیست این کار را انجام دهید،
651
00:20:22,240 –> 00:20:23,520
بنابراین نیازی نیست x را پاس کنم
652
00:20:23,520 –> 00:20:25,039
زیرا ثابت مسیر است.
653
00:20:25,039 –> 00:20:26,960
y از
654
00:20:26,960 –> 00:20:28,400
دست و پا زدن و سپس میخواهیم
655
00:20:28,400 –> 00:20:29,919
مکان توپ را دقیقاً
656
00:20:29,919 –> 00:20:32,000
بدانیم که مهم است، بنابراین من میخواهم
657
00:20:32,000 –> 00:20:33,600
y توپ را
658
00:20:33,600 –> 00:20:35,840
خوب پاس بدهم، بنابراین در واقع اجازه ندهیم فقط بگوییم p
659
00:20:35,840 –> 00:20:37,919
، بگوییم y توپ
660
00:20:37,919 –> 00:20:40,080
و سپس من. همچنین فاصله
661
00:20:40,080 –> 00:20:42,720
بین پارو و توپ را پاس
662
00:20:42,720 –> 00:20:43,919
خواهم کرد، زیرا قرار نیست x
663
00:20:43,919 –> 00:20:46,159
پارو را پاس کنم، نه فقط x
664
00:20:46,159 –> 00:20:48,159
توپ را پاس می دهم، بلکه فاصله بین را نیز پاس خواهم کرد
665
00:20:48,159 –> 00:20:49,600
تا بداند چقدر نزدیک هستیم. به
666
00:20:49,600 –> 00:20:51,679
سمت راست میروم، بنابراین من فقط به این شکل
667
00:20:51,679 –> 00:20:53,440
میگویم که برای فاصله
668
00:20:53,440 –> 00:20:55,760
بین پارو و توپ خوب میایستم، بنابراین آنها
669
00:20:55,760 –> 00:20:57,200
m خواهند بود y سه ورودی به شبکه عصبی،
670
00:20:57,200 –> 00:20:58,880
بنابراین بیایید صفحه را در اینجا پاک کنیم
671
00:20:58,880 –> 00:21:00,240
و حالا بیایید یک شبکه عصبی ترسیم
672
00:21:00,240 –> 00:21:01,919
کنیم که ورودی هایی را که در
673
00:21:01,919 –> 00:21:03,600
مورد آن بحث کردیم و خروجی ها را داشته باشد،
674
00:21:03,600 –> 00:21:05,440
بنابراین در یک شبکه عصبی ما
675
00:21:05,440 –> 00:21:06,640
گره هایی داریم که لایه ورودی خود را خواهیم داشت.
676
00:21:06,640 –> 00:21:08,480
آن را با رنگ قرمز ترسیم می کنیم
677
00:21:08,480 –> 00:21:10,559
و این ورودی اول که
678
00:21:10,559 –> 00:21:13,520
می خواهیم بگوییم y پارو
679
00:21:13,520 –> 00:21:16,799
خواهد بود، ورودی دوم y توپ
680
00:21:16,799 –> 00:21:19,039
خواهد بود و سپس این فاصله x
681
00:21:19,039 –> 00:21:20,960
بین توپ و توپ خواهد بود.
682
00:21:20,960 –> 00:21:22,080
خوب پارو بزنید و سپس یک
683
00:21:22,080 –> 00:21:23,520
لایه خروجی خواهیم داشت
684
00:21:23,520 –> 00:21:25,440
و برای لایه خروجی از آنجایی که
685
00:21:25,440 –> 00:21:27,120
سه تصمیم ممکن وجود دارد که
686
00:21:27,120 –> 00:21:28,559
میخواهیم بگیریم، سه نت
687
00:21:28,559 –> 00:21:30,320
درست خواهیم داشت و این گره اول میگوید خوب
688
00:21:30,320 –> 00:21:33,200
ما میخواهیم ثابت بمانیم می گوید برو
689
00:21:33,200 –> 00:21:34,320
بالا
690
00:21:34,320 –> 00:21:36,400
و این باقی می ماند پایین می رود و
691
00:21:36,400 –> 00:21:37,919
باید تفسیر کنیم
692
00:21:37,919 –> 00:21:40,640
که کدام نوع گره نشان دهنده چیزی است
693
00:21:40,640 –> 00:21:42,480
که بعداً در مورد آن صحبت خواهم کرد اما نکته
694
00:21:42,480 –> 00:21:43,760
اینجاست که ما سه گره می خواهیم زیرا ما
695
00:21:43,760 –> 00:21:46,000
سه تصمیم ممکن داریم و بنابراین می توانیم
696
00:21:46,000 –> 00:21:47,520
بگوییم چیزی شبیه به هر گره ای که
697
00:21:47,520 –> 00:21:49,520
بالاترین را دارد ارزش تصمیمی است
698
00:21:49,520 –> 00:21:50,640
که میخواهیم بگیریم
699
00:21:50,640 –> 00:21:52,320
و سپس در این بین، زیرا این
700
00:21:52,320 –> 00:21:53,679
لایه ورودی ما است
701
00:21:53,679 –> 00:21:55,280
و این لایه خروجی ما است،
702
00:21:55,280 –> 00:21:57,039
ما چیزی به نام لایه پنهان
703
00:21:57,039 –> 00:21:59,120
یا چندین لایه پنهان داریم،
704
00:21:59,120 –> 00:22:01,200
بنابراین شاید من چیزی شبیه به دو داشته باشم. گرهها
705
00:22:01,200 –> 00:22:03,120
در یک لایه پنهان و سپس معمولاً
706
00:22:03,120 –> 00:22:06,000
کاری که ما انجام میدهیم این است که هر گره را
707
00:22:06,000 –> 00:22:09,120
از لایه ورودی به لایه پنهان وصل میکنیم
708
00:22:09,120 –> 00:22:09,919
709
00:22:09,919 –> 00:22:11,840
و سپس هر گره از لایه پنهان
710
00:22:11,840 –> 00:22:14,320
به هر گره از
711
00:22:14,320 –> 00:22:16,000
لایه خروجی متصل میشود، اکنون همیشه اینطور نیست
712
00:22:16,000 –> 00:22:16,799
713
00:22:16,799 –> 00:22:18,960
گاهی اوقات ما اتصالات از دست رفته است یا
714
00:22:18,960 –> 00:22:20,640
گاهی اوقات چندین اتصال وجود دارد،
715
00:22:20,640 –> 00:22:22,000
همه انواع مختلف ممکن است اتفاق بیفتند،
716
00:22:22,000 –> 00:22:23,760
اما به طور کلی، ما لایه ورودی خود را
717
00:22:23,760 –> 00:22:26,159
داریم، ما لایه های مخفی داریم، بنابراین در این
718
00:22:26,159 –> 00:22:27,440
مورد فقط یک
719
00:22:27,440 –> 00:22:29,039
لایه داریم که می توانیم چندین لایه پنهان داشته باشیم، می توانیم
720
00:22:29,039 –> 00:22:30,799
پنج گره ده گره به عنوان داشته باشیم. گرههای زیادی را همانطور که
721
00:22:30,799 –> 00:22:32,720
میخواهیم در لایههای پنهان داریم و سپس
722
00:22:32,720 –> 00:22:34,640
لایه خروجی خود را داریم و کاری که میخواهیم
723
00:22:34,640 –> 00:22:36,799
انجام دهیم این است که اطلاعاتی را که
724
00:22:36,799 –> 00:22:38,240
از طریق شبکه عصبی ارسال میشود ارسال کنیم و سپس
725
00:22:38,240 –> 00:22:39,919
مقداری از آن را دریافت کنیم. tput و ما واقعاً اهمیتی نمیدهیم که
726
00:22:39,919 –> 00:22:41,440
چگونه خروجی را دریافت میکنیم، فقط
727
00:22:41,440 –> 00:22:43,520
میخواهیم دقیقترین خروجی ممکن
728
00:22:43,520 –> 00:22:45,679
را به دست آوریم، بنابراین این یک نوع مختصر در مورد
729
00:22:45,679 –> 00:22:47,200
شبکههای عصبی است.
730
00:22:47,200 –> 00:22:48,720
731
00:22:48,720 –> 00:22:50,640
توضیح نمی دهم
732
00:22:50,640 –> 00:22:52,240
که چگونه داده ها از طریق اینجا ارسال می
733
00:22:52,240 –> 00:22:54,000
شوند، نکته اصلی که می خواهم
734
00:22:54,000 –> 00:22:55,919
با نگاه کردن به این نمودار به شما نشان دهم این است که
735
00:22:55,919 –> 00:22:57,840
به نوعی تصادفی است یا به نوعی
736
00:22:57,840 –> 00:23:00,000
دلخواه است که ما معماری داخلی را انتخاب می کنیم.
737
00:23:00,000 –> 00:23:01,840
شبکه ما
738
00:23:01,840 –> 00:23:04,559
دقیقاً در این کادری که من ترسیم میکنم
739
00:23:04,559 –> 00:23:06,480
میتواند واقعاً هر چیزی باشد. برای من مهم نیست
740
00:23:06,480 –> 00:23:07,520
که چه چیزی در وسط شبکه عصبی
741
00:23:07,520 –> 00:23:10,080
وجود دارد، تا زمانی که خروجی مبتنی بر
742
00:23:10,080 –> 00:23:11,760
ورودی من معتبر باشد، این واقعاً تمام چیزی است
743
00:23:11,760 –> 00:23:13,600
که من به آن اهمیت میدهم. فقط
744
00:23:13,600 –> 00:23:15,440
یک جعبه سیاه نامرئی باشد که در داخل
745
00:23:15,440 –> 00:23:17,360
شبکه عصبی وجود دارد و برای من تلاش
746
00:23:17,360 –> 00:23:19,280
کنم تعداد گره های موجود در هر
747
00:23:19,280 –> 00:23:21,039
لایه پنهان را تعیین کنم که چند لایه پنهان
748
00:23:21,039 –> 00:23:22,720
باید داشته
749
00:23:22,720 –> 00:23:24,400
باشم، این کار بسیار دشواری است به خصوص اگر در تلاش
750
00:23:24,400 –> 00:23:26,480
برای حل یک مشکل باشیم. وظیفه ای مانند ترا برای
751
00:23:26,480 –> 00:23:28,960
انجام یک بازی که در آن واقعاً
752
00:23:28,960 –> 00:23:30,720
کار شناخته شده ای نیست، شاید بازی پنگ درست باشد
753
00:23:30,720 –> 00:23:32,720
، اما برای هر نوع بازی عمومی یا
754
00:23:32,720 –> 00:23:34,480
شاید بازی ای که خودتان ساخته
755
00:23:34,480 –> 00:23:36,320
اید، راه خوبی برای تعیین
756
00:23:36,320 –> 00:23:38,000
تعداد گره ها وجود ندارد. لایه مخفی ما که باید
757
00:23:38,000 –> 00:23:40,320
داشته باشیم و همچنین چند لایه
758
00:23:40,320 –> 00:23:42,159
باید داشته باشیم، میتوانید حدس بزنید،
759
00:23:42,159 –> 00:23:44,000
اما انجام این کار خیلی آسان نیست،
760
00:23:44,000 –> 00:23:45,919
بنابراین دلیلی که من مدام این را میگویم این است
761
00:23:45,919 –> 00:23:47,679
که این معماری در
762
00:23:47,679 –> 00:23:49,679
وسط واقعا مهربان است. از علامت سوال
763
00:23:49,679 –> 00:23:51,120
این چیزی است که واقعاً
764
00:23:51,120 –> 00:23:52,799
عملکرد شبکه عصبی را تعیین می کند و
765
00:23:52,799 –> 00:23:54,400
این چیزی است که انتخاب آن برای ما دشوار است،
766
00:23:54,400 –> 00:23:57,440
بنابراین به جای تصمیم گیری در مورد
767
00:23:57,440 –> 00:23:59,120
آن، قرار است الگوریتم منظمی را برای
768
00:23:59,120 –> 00:24:00,799
انجام این کار برای ما بدست آوریم، بنابراین اجازه دهید بزرگنمایی کنم. کمی از
769
00:24:00,799 –> 00:24:01,840
اینجا بیرون بیایید
770
00:24:01,840 –> 00:24:04,400
تا خوب من این را بالا ببرم،
771
00:24:04,400 –> 00:24:05,840
چرا به من اجازه بزرگنمایی نمی دهد،
772
00:24:05,840 –> 00:24:06,720
خوب شما می دانید چه چیزی خوب است، ما
773
00:24:06,720 –> 00:24:08,000
فقط از صفحه خارج می شویم، من دیگر نیازی
774
00:24:08,000 –> 00:24:09,600
به این ندارم که روی صفحه باشد.
775
00:24:09,600 –> 00:24:12,159
الگوریتم منظمی که قرار است انجام دهد این است
776
00:24:12,159 –> 00:24:13,919
که ایجاد کند مجموعه ای از
777
00:24:13,919 –> 00:24:15,440
شبکه های عصبی و این شبکه های عصبی
778
00:24:15,440 –> 00:24:18,400
قرار است با
779
00:24:18,400 –> 00:24:19,760
تعدادی از لایه های پنهان از پیش تعریف شده شروع کنند، تعدادی
780
00:24:19,760 –> 00:24:22,240
گره پنهان که ما به
781
00:24:22,240 –> 00:24:23,760
تنهایی تصمیم خواهیم گرفت و سپس
782
00:24:23,760 –> 00:24:25,440
جهش های تصادفی برای این
783
00:24:25,440 –> 00:24:26,720
عصبی انجام می شود. شبکهها، بنابراین ما در اینجا با
784
00:24:26,720 –> 00:24:28,960
یک نوع جمعیت شروع میکنیم، بنابراین بیایید بگوییم
785
00:24:28,960 –> 00:24:30,880
جمعیتی با تعداد
786
00:24:30,880 –> 00:24:32,559
شبکههای عصبی که تعیین میکنیم، در این مورد،
787
00:24:32,559 –> 00:24:34,720
فرض کنیم با 10 شبکه عصبی شروع کنیم و
788
00:24:34,720 –> 00:24:36,400
این شبکههای عصبی همه
789
00:24:36,400 –> 00:24:38,960
کمی متفاوت خواهند بود و دارای نوعی
790
00:24:38,960 –> 00:24:41,039
جزئی هستند. تغییراتی که از
791
00:24:41,039 –> 00:24:42,559
شبکه عصبی آغازینی که خودمان تعریف می
792
00:24:42,559 –> 00:24:44,400
کنیم به آنها داده شده است، بنابراین شاید بگوییم که
793
00:24:44,400 –> 00:24:46,720
می خواهیم شبکه ای را داشته باشیم که گفتم
794
00:24:46,720 –> 00:24:48,480
می خواهیم سه گره ورودی داشته باشیم، می
795
00:24:48,480 –> 00:24:50,080
خواهیم دو گره مخفی داشته باشیم و می
796
00:24:50,080 –> 00:24:52,240
خواهیم سه گره خروجی داشته باشیم. تعداد
797
00:24:52,240 –> 00:24:53,840
گرههای ورودی و تعداد
798
00:24:53,840 –> 00:24:55,679
گرههای خروجی همیشه
799
00:24:55,679 –> 00:24:57,120
بدون توجه به آنچه که میشود ثابت میماند، اما چیزی که قرار است
800
00:24:57,120 –> 00:24:58,640
تغییر کند چیزی است که در وسط است،
801
00:24:58,640 –> 00:24:59,919
تعداد گرههای پنهان، تعداد
802
00:24:59,919 –> 00:25:02,320
اتصالات. اعمال و همه پارامترهای
803
00:25:02,320 –> 00:25:03,520
شبکه عصبی، چیزی است که
804
00:25:03,520 –> 00:25:06,240
قرار است توسط الگوریتم منظم اصلاح شود،
805
00:25:06,240 –> 00:25:08,640
بنابراین ما با جمعیت 10
806
00:25:08,640 –> 00:25:10,159
شبکه عصبی شروع میکنیم و
807
00:25:10,159 –> 00:25:12,559
این شبکههای عصبی را ژنوم میخوانیم و
808
00:25:12,559 –> 00:25:14,240
کاری که میخواهیم انجام دهیم. آیا ما
809
00:25:14,240 –> 00:25:16,480
همه این ژنوم ها را می
810
00:25:16,480 –> 00:25:18,080
گیریم، آنها را آزمایش می کنیم و می
811
00:25:18,080 –> 00:25:20,559
خواهیم تعیین کنیم که تناسب اندام آنها چیست
812
00:25:20,559 –> 00:25:22,080
،
813
00:25:22,080 –> 00:25:24,320
تناسب ژنوم اساساً امتیاز
814
00:25:24,320 –> 00:25:26,400
آن است، این است که اگر صحبت می کنیم چقدر خوب عمل می
815
00:25:26,400 –> 00:25:28,000
کند. در مورد انسان و
816
00:25:28,000 –> 00:25:29,440
انتخاب طبیعی که در یک
817
00:25:29,440 –> 00:25:30,960
ثانیه به آنها خواهم پرداخت، این است که چقدر
818
00:25:30,960 –> 00:25:32,960
زنده میمانید انتخاب طبیعی درست
819
00:25:32,960 –> 00:25:34,960
اساساً بیان میکند که در طول
820
00:25:34,960 –> 00:25:36,880
دهها هزار سال، چندین
821
00:25:36,880 –> 00:25:38,960
نسل از انسانها را میشناسید که
822
00:25:38,960 –> 00:25:40,559
باهوشترین نسلها بودند. که توانستند
823
00:25:40,559 –> 00:25:43,039
زنده بمانند، آنها با هم تولید کردند که
824
00:25:43,039 –> 00:25:44,880
فرزندان باهوش تری ایجاد کردند و سپس این روند
825
00:25:44,880 –> 00:25:46,880
ادامه پیدا کرد و شما
826
00:25:46,880 –> 00:25:48,640
اغلب مم ها و چیزهایی را در مورد شما
827
00:25:48,640 –> 00:25:50,240
می بینید که انتخاب طبیعی را با
828
00:25:50,240 –> 00:25:52,400
مردم امروزی که بسیار انجام می دهند، خواهید دید. چیزهای احمقانه و در
829
00:25:52,400 –> 00:25:54,480
نهایت شما می دانید که احتمالاً می میرید
830
00:25:54,480 –> 00:25:55,679
واضح است که کمی تاریک است،
831
00:25:55,679 –> 00:25:56,880
ما نیازی به صحبت در مورد آن در اینجا نداریم،
832
00:25:56,880 –> 00:25:58,159
اما نکته انتخاب طبیعی این است
833
00:25:58,159 –> 00:26:00,400
که طی ده ها هزار سال
834
00:26:00,400 –> 00:26:02,880
شما جمعیت زیادی از مردم دارید
835
00:26:02,880 –> 00:26:04,559
که همه آنها پرورش می دهند. آنها با هم فرزندانی را ایجاد می
836
00:26:04,559 –> 00:26:06,640
کنند که بهترین آنها
837
00:26:06,640 –> 00:26:08,720
زنده می مانند و بدترین آنها
838
00:26:08,720 –> 00:26:10,559
می میرند و این بدان معنی است که
839
00:26:10,559 –> 00:26:13,360
وقتی به سال 2022 رسیدید،
840
00:26:13,360 –> 00:26:15,760
مجموعه ای از انسان ها دارید که همگی تا حدی
841
00:26:15,760 –> 00:26:18,159
بهتر از اولین هستند. تولید
842
00:26:18,159 –> 00:26:19,679
دوباره به معیارهایی که شما استفاده می کنید بستگی دارد،
843
00:26:19,679 –> 00:26:21,520
اما این چیزی است که این الگوریتم
844
00:26:21,520 –> 00:26:23,679
تلاش می کند تا انجام دهد، بنابراین
845
00:26:23,679 –> 00:26:25,360
ما تک تک ژنوم های خود را می گیریم و
846
00:26:25,360 –> 00:26:26,720
آنها را درجه بندی می کنیم و به آنها تناسب می دهیم، اکنون
847
00:26:26,720 –> 00:26:28,559
تناسب اندام این است که آنها چقدر وظیفه ما را انجام می دهند.
848
00:26:28,559 –> 00:26:30,480
بنابراین، در این مورد، زمانی که ما در حال بازی
849
00:26:30,480 –> 00:26:31,919
پنگ هستیم، باید به نوعی
850
00:26:31,919 –> 00:26:34,240
تابع تناسب اندام و راهی برای
851
00:26:34,240 –> 00:26:36,000
تعیین تناسب اندام هر یک از اهدافمان
852
00:26:36,000 –> 00:26:38,720
بیابیم، اکنون من به سادگی از
853
00:26:38,720 –> 00:26:40,480
تعداد دفعاتی استفاده می کنم که آی ضربه می زند
854
00:26:40,480 –> 00:26:42,960
توپی که قرار است تناسب اندام من باشد، بنابراین
855
00:26:42,960 –> 00:26:44,559
اگر هوش مصنوعی توپ را از دست بدهد که
856
00:26:44,559 –> 00:26:46,400
در همان ابتدا بسیار اتفاق می افتد
857
00:26:46,400 –> 00:26:48,000
، آمادگی جسمانی صفر خواهد داشت، اما
858
00:26:48,000 –> 00:26:49,919
اگر هوش مصنوعی برای مدت زمان زیادی زنده بماند
859
00:26:49,919 –> 00:26:50,720
860
00:26:50,720 –> 00:26:52,240
و به توپ ضربه بزند. بسیار پس از آن
861
00:26:52,240 –> 00:26:53,760
به تناسب اندام بالایی می رسد
862
00:26:53,760 –> 00:26:55,039
که به همان سادگی برای
863
00:26:55,039 –> 00:26:56,640
عملکرد تناسب اندام است، بنابراین ما
864
00:26:56,640 –> 00:26:58,159
به همه آنها تناسب اندام می دهیم، فقط بگوییم که
865
00:26:58,159 –> 00:27:00,480
ما چیزی شبیه به یک هفت سه
866
00:27:00,480 –> 00:27:04,480
دو صفر و سه چهار ده
867
00:27:04,480 –> 00:27:05,360
بیست و بیست و
868
00:27:05,360 –> 00:27:07,279
یک داریم. ارزش های تناسب اندام
869
00:27:07,279 –> 00:27:09,440
هستند و سپس کاری که ما می خواهیم
870
00:27:09,440 –> 00:27:10,400
انجام دهیم این است که به این
871
00:27:10,400 –> 00:27:12,240
جمعیت از ژنوم ها نگاه می کنیم و
872
00:27:12,240 –> 00:27:14,240
بهترین ژنوم هایی را که داریم حفظ می کنیم تا
873
00:27:14,240 –> 00:27:17,919
شاید مانند 21 20 10
874
00:27:17,919 –> 00:27:19,760
نگه داریم. اوه شاید هفت را نگه داریم. همچنین
875
00:27:19,760 –> 00:27:21,840
برخی از بدترینها را دور میاندازیم
876
00:27:21,840 –> 00:27:23,520
و سپس بهترین
877
00:27:23,520 –> 00:27:25,919
ژنومها را با هم پرورش میدهیم و به نسل بعدی میرویم
878
00:27:25,919 –> 00:27:28,080
و وقتی میگویم پرورش دهیم
879
00:27:28,080 –> 00:27:30,720
آنچه واقعاً شامل میشود، نگاه کردن به
880
00:27:30,720 –> 00:27:32,240
معماری هر یک از این عصبی است.
881
00:27:32,240 –> 00:27:33,760
شبکه ها زیرا به یاد داشته باشید هر ژنومی است
882
00:27:33,760 –> 00:27:36,080
در واقع فقط یک شبکه عصبی و گرفتن
883
00:27:36,080 –> 00:27:37,440
آن ویژگی ها و ادغام
884
00:27:37,440 –> 00:27:39,360
آنها با یکدیگر در یک شبکه عصبی جدید دیگر،
885
00:27:39,360 –> 00:27:41,279
بنابراین شاید یک شبکه عصبی دارای
886
00:27:41,279 –> 00:27:42,720
یک لایه با دو گره باشد، دیگری دارای
887
00:27:42,720 –> 00:27:44,960
یک لایه با سه گره باشد، شاید ما یک
888
00:27:44,960 –> 00:27:46,559
شبکه جدید بسازیم که
889
00:27:46,559 –> 00:27:49,120
ببخشید دو لایه پنهان، یکی با دو
890
00:27:49,120 –> 00:27:51,120
گره، یکی با سه گره، هر
891
00:27:51,120 –> 00:27:52,720
جهش باشد، ما تغییراتی ایجاد
892
00:27:52,720 –> 00:27:54,559
میکنیم و به نوعی بهترین شبکهها را
893
00:27:54,559 –> 00:27:56,240
با هم پرورش میدهیم و امیدواریم که نسل بهتری داشته
894
00:27:56,240 –> 00:27:58,320
باشیم، این مفهوم است، بنابراین ما اینها را انتخاب میکنیم،
895
00:27:58,320 –> 00:28:00,640
اجازه دهید اینجا را بزرگنمایی کنیم و
896
00:28:00,640 –> 00:28:03,360
سپس به این موضوع می گوییم که نسل
897
00:28:03,360 –> 00:28:04,799
یک خوب است
898
00:28:04,799 –> 00:28:06,559
و به جلو می رویم و
899
00:28:06,559 –> 00:28:08,080
نسل دیگری از ژنوم ها را می سازیم که به اینجا می رسد بنابراین
900
00:28:08,080 –> 00:28:11,039
یک دو سه چهار پنج شش
901
00:28:11,039 –> 00:28:12,960
هفت هشت نه ده
902
00:28:12,960 –> 00:28:14,320
خوب داریم و سپس همان چیزی را با این
903
00:28:14,320 –> 00:28:16,320
ژنوم ها می گیریم. ما آنها را
904
00:28:16,320 –> 00:28:18,320
از نظر تناسب اندام درجه بندی می کنیم، بهترین ها را نگه می داریم و
905
00:28:18,320 –> 00:28:19,760
از شر بدترین ها خلاص می کنیم و سپس
906
00:28:19,760 –> 00:28:21,760
بهترین ها را با هم جهش می دهیم فرزندانی ایجاد می کنیم
907
00:28:21,760 –> 00:28:24,080
و به نسل بعدی
908
00:28:24,080 –> 00:28:26,320
می رویم و این کار را تا حد امکان ادامه می دهیم.
909
00:28:26,320 –> 00:28:28,399
در نهایت یک ژنوم یا یک شبکه عصبی به دست میآوریم
910
00:28:28,399 –> 00:28:30,559
که معیارهای ما
911
00:28:30,559 –> 00:28:32,399
برای تناسب اندام را برآورده میکند، بنابراین شاید وقتی تناسب اندام
912
00:28:32,399 –> 00:28:33,600
500
913
00:28:33,600 –> 00:28:35,520
700 هر چه که باشد، بگوییم خوب است، ما تمام
914
00:28:35,520 –> 00:28:37,360
کردیم، هوشی پیدا کردهایم که به
915
00:28:37,360 –> 00:28:39,279
اندازه کافی در بازی پنگ
916
00:28:39,279 –> 00:28:40,559
خوب است. دوباره الگوریتم را به پایان خواهیم رساند و
917
00:28:40,559 –> 00:28:42,320
سپس میتوانیم آن ai را ذخیره کرده و در بازی خود استفاده کنیم،
918
00:28:42,320 –> 00:28:43,200
919
00:28:43,200 –> 00:28:45,760
امیدوارم این کار کمی منطقی باشد،
920
00:28:45,760 –> 00:28:48,320
بنابراین بدیهی است که من
921
00:28:48,320 –> 00:28:49,919
سادهسازی گستردهای در مورد نحوه عملکرد الگوریتم منظم
922
00:28:49,919 –> 00:28:52,080
به مردم
923
00:28:52,080 –> 00:28:54,080
میدهم که بسیار باهوشتر از من نوشتم.
924
00:28:54,080 –> 00:28:55,360
ما قرار نیست این الگوریتم را
925
00:28:55,360 –> 00:28:56,720
بنویسیم، فقط از آن استفاده می کنیم، به
926
00:28:56,720 –> 00:28:58,159
همین دلیل است که ما فایل پیکربندی را داریم و
927
00:28:58,159 –> 00:28:59,760
آن ماژول را نصب کردیم
928
00:28:59,760 –> 00:29:01,360
و neat خیلی بیشتر از آنچه در اینجا توضیح می دهم انجام می
929
00:29:01,360 –> 00:29:03,679
دهد، در واقع گونه های مختلف را حفظ می کند.
930
00:29:03,679 –> 00:29:05,919
از شبکههای عصبی،
931
00:29:05,919 –> 00:29:08,320
بنابراین منظور من از آن این است که ما گروهبندی میکنیم،
932
00:29:08,320 –> 00:29:11,440
شاید شما میدانید، بیایید بگوییم
933
00:29:11,440 –> 00:29:13,440
اینها و اینها با هم در سه
934
00:29:13,440 –> 00:29:15,360
گونه جداگانه و سعی میکنیم
935
00:29:15,360 –> 00:29:16,559
مطمئن شویم که از طریق
936
00:29:16,559 –> 00:29:19,039
جهشهای مختلف خود حداقل یک یا
937
00:29:19,039 –> 00:29:20,159
دو
938
00:29:20,159 –> 00:29:22,000
ژنومهای هر گونه، بنابراین
939
00:29:22,000 –> 00:29:24,720
گونهای نداریم که به درستی منقرض میشود و
940
00:29:24,720 –> 00:29:26,159
دلیل اینکه ما این کار را انجام میدهیم این است که
941
00:29:26,159 –> 00:29:27,679
ممکن است گونهای وجود داشته باشد که در حال حاضر خیلی خوب
942
00:29:27,679 –> 00:29:30,720
نیست، اما ممکن است معماری امیدوارکنندهای داشته
943
00:29:30,720 –> 00:29:32,720
باشد تا بعداً در حال حاضر
944
00:29:32,720 –> 00:29:34,399
انواع دیگر وجود داشته باشد. ملاحظاتی
945
00:29:34,399 –> 00:29:36,480
مانند این که چه مدت ژنومی را نگه دارید
946
00:29:36,480 –> 00:29:38,480
که عملکرد خوبی نداشته باشد اگر من یک
947
00:29:38,480 –> 00:29:40,000
گونه دارم و یک ژنوم در آن وجود دارد
948
00:29:40,000 –> 00:29:41,520
و مثلاً برای 10
949
00:29:41,520 –> 00:29:43,520
نسل
950
00:29:43,520 –> 00:29:45,600
خوب عمل نمی کند، برای من کافی است که بگویم خوب است، می خواهم دریافت کنم. از شر آن خلاص
951
00:29:45,600 –> 00:29:47,200
شوید من انواع سؤالات مانند آن را نمی دانم
952
00:29:47,200 –> 00:29:49,200
اکنون این امکان نیز وجود دارد که
953
00:29:49,200 –> 00:29:51,520
جهش های تصادفی را به فرزندان و
954
00:29:51,520 –> 00:29:54,080
نوع فرزندان ژنوم های دیگر اضافه کنید، بنابراین آنچه ممکن است
955
00:29:54,080 –> 00:29:56,159
اتفاق بیفتد این است که شما بهترین ژنوم را انتخاب کنید
956
00:29:56,159 –> 00:29:57,679
و به جای اینکه آن را با ژنوم دیگری پرورش دهید.
957
00:29:57,679 –> 00:29:59,679
یکی میتوانید فقط یک جهش تصادفی اضافه کنید
958
00:29:59,679 –> 00:30:01,279
و یک جهش ممکن است
959
00:30:01,279 –> 00:30:03,600
یک اتصال را غیرفعال کند یا یک گره دیگر اضافه کند
960
00:30:03,600 –> 00:30:05,600
یا وزنها
961
00:30:05,600 –> 00:30:07,520
و سوگیریهای شبکه عصبی را کمی تغییر دهد،
962
00:30:07,520 –> 00:30:09,200
همه چیز میتواند ادامه پیدا کند
963
00:30:09,200 –> 00:30:10,559
964
00:30:10,559 –> 00:30:12,799
معمولاً برای آموزش هوش مصنوعی به نسلهای زیادی نیاز است،
965
00:30:12,799 –> 00:30:14,399
966
00:30:14,399 –> 00:30:15,360
بنابراین ما با
967
00:30:15,360 –> 00:30:18,640
جمعیتی نزدیک به 50 ژنوم UH
968
00:30:18,640 –> 00:30:20,080
شروع میکنیم و سپس کاری که میخواهیم انجام دهیم این است که آنها
969
00:30:20,080 –> 00:30:22,399
را در حدود 50 نسل اجرا کنیم تا
970
00:30:22,399 –> 00:30:24,320
به ژنوم برسیم. یا یک شبکه عصبی
971
00:30:24,320 –> 00:30:26,799
که بازی پنگ را به خوبی
972
00:30:26,799 –> 00:30:29,440
خوب بازی میکند، بنابراین این برای توضیح در مورد
973
00:30:29,440 –> 00:30:31,440
Neat است، امیدوارم که کمی
974
00:30:31,440 –> 00:30:33,600
منطقی باشد، حالا بیایید روی
975
00:30:33,600 –> 00:30:35,120
رایانه بپریم و در واقع شروع به پیادهسازی این کنیم
976
00:30:35,120 –> 00:30:36,960
که زمان زیادی از ما نمیگیرد. و سپس
977
00:30:36,960 –> 00:30:38,240
در مورد
978
00:30:38,240 –> 00:30:40,080
استراتژیهای مختلف در مورد آزمایش
979
00:30:40,080 –> 00:30:41,520
تناسب اندام صحبت خواهیم کرد، زیرا همانطور که در
980
00:30:41,520 –> 00:30:43,440
اینجا متوجه خواهید شد تناسب اندام
981
00:30:43,440 –> 00:30:45,200
مهمترین بخش است، ما قصد داریم بهترین ها را حفظ کنیم
982
00:30:45,200 –> 00:30:46,960
تا به طور کلی از شر بدترین ها خلاص شویم
983
00:30:46,960 –> 00:30:48,559
و بنابراین ما واقعاً باید
984
00:30:48,559 –> 00:30:51,039
مطمئن شویم که این ژنومها را
985
00:30:51,039 –> 00:30:53,200
به درستی قضاوت میکنیم و میدانیم کدام یک
986
00:30:53,200 –> 00:30:54,880
از آنها بهترین هستند.
987
00:30:54,880 –> 00:30:57,039
988
00:30:57,039 –> 00:30:58,799
989
00:30:58,799 –> 00:31:00,159
برای
990
00:31:00,159 –> 00:31:01,519
اینکه یک ثانیه در مورد برخی منابع به شما بگویم،
991
00:31:01,519 –> 00:31:03,519
بنابراین اول از همه، این مقاله دقیقی است که به طور
992
00:31:03,519 –> 00:31:05,919
منظم توضیح می دهد، یک
993
00:31:05,919 –> 00:31:08,080
مرور کلی از جوانب مثبت و منفی
994
00:31:08,080 –> 00:31:09,519
آن ارائه می دهد و بدیهی است که
995
00:31:09,519 –> 00:31:11,279
توضیح بهتری در مورد نحوه عملکرد
996
00:31:11,279 –> 00:31:12,640
الگوریتم نسبت به آنچه من فقط می توانستم به
997
00:31:12,640 –> 00:31:14,480
شما بدهم، پس لطفاً این را بخوانید،
998
00:31:14,480 –> 00:31:16,000
خواندن آن خیلی سخت نیست،
999
00:31:16,000 –> 00:31:18,000
فقط شش صفحه است و واقعاً
1000
00:31:18,000 –> 00:31:19,519
احتمالاً بسیاری از
1001
00:31:19,519 –> 00:31:21,279
سؤالات را متبلور می کند یا حدس می زنم فقط
1002
00:31:21,279 –> 00:31:23,279
درک شما از الگوریتم دقیق به
1003
00:31:23,279 –> 00:31:24,960
هر حال این منابع است. اوه
1004
00:31:24,960 –> 00:31:26,080
این منبعی است متأسفم که در
1005
00:31:26,080 –> 00:31:28,640
توضیحات آمده است و سپس در اینجا ادامه میدهم،
1006
00:31:28,640 –> 00:31:30,799
من این مثال را از مستندات منظم دارم،
1007
00:31:30,799 –> 00:31:32,399
بنابراین مستندات منظم پایتون
1008
00:31:32,399 –> 00:31:34,159
این یکی از
1009
00:31:34,159 –> 00:31:36,320
نمونههایی است که آنها ارائه میدهند و در مورد
1010
00:31:36,320 –> 00:31:37,919
عملکرد تناسب اندام صحبت میکند
1011
00:31:37,919 –> 00:31:39,200
که نتایج را به طور منظم اجرا میکند و من نمیروم برای
1012
00:31:39,200 –> 00:31:40,559
خواندن این نیز می توانید آزادانه
1013
00:31:40,559 –> 00:31:41,919
آن را به تنهایی بخوانید و سپس
1014
00:31:41,919 –> 00:31:43,919
کد نمونه ای وجود دارد که بسیاری از کدهای
1015
00:31:43,919 –> 00:31:46,159
ما مستقیماً از اینجا و همچنین یک
1016
00:31:46,159 –> 00:31:47,760
پیکربندی هستند. فایل n
1017
00:31:47,760 –> 00:31:49,679
بنابراین این فایل پیکربندی پیشفرض
1018
00:31:49,679 –> 00:31:51,360
برای مثالی است که استفاده میکنند
1019
00:31:51,360 –> 00:31:53,360
، که مثال xor است،
1020
00:31:53,360 –> 00:31:54,799
اگر میخواهید بیشتر در مورد آن بدانید، دوباره این را بخوانید،
1021
00:31:54,799 –> 00:31:57,039
اما فایل پیکربندی
1022
00:31:57,039 –> 00:31:58,399
که من در پروژه دارم که
1023
00:31:58,399 –> 00:32:00,240
قبلاً برای ما نوشته شده است،
1024
00:32:00,240 –> 00:32:02,320
اساساً دقیقاً مانند این با چند
1025
00:32:02,320 –> 00:32:04,320
تغییر جزئی، بنابراین من در مورد
1026
00:32:04,320 –> 00:32:06,240
آنچه که تغییر داده ام صحبت خواهم کرد، اما اگر می خواهید
1027
00:32:06,240 –> 00:32:07,679
بفهمید که هر یک از
1028
00:32:07,679 –> 00:32:10,320
اینها مانند 70 خط به چه معناست، می توانید
1029
00:32:10,320 –> 00:32:12,960
روی توضیحات فایل پیکربندی کلیک کنید
1030
00:32:12,960 –> 00:32:14,720
و معیارهای تناسب اندام را به شما نشان می دهد و آستانه تناسب اندام
1031
00:32:14,720 –> 00:32:16,000
مانند تمام
1032
00:32:16,000 –> 00:32:18,559
بخش های مختلف در این فایل پیکربندی uh
1033
00:32:18,559 –> 00:32:20,320
در مورد نحوه استفاده شما از آنها و آنچه
1034
00:32:20,320 –> 00:32:22,159
می توانید آنها را روی آنها تنظیم کنید صحبت می کند، بنابراین من دیگر
1035
00:32:22,159 –> 00:32:23,440
زمانی را صرف خواندن این
1036
00:32:23,440 –> 00:32:24,559
همه برای شما نمی کنم، این چیزی است که شما می توانید
1037
00:32:24,559 –> 00:32:27,120
1038
00:32:27,120 –> 00:32:28,640
اگر نمی خواهید به وقت خود انجام دهید، نیازی نیست وارد شوید و چیزی را لمس کنید،
1039
00:32:28,640 –> 00:32:30,159
اما می دانم که برخی از شما می خواهید
1040
00:32:30,159 –> 00:32:31,440
از شما بپرسید که این
1041
00:32:31,440 –> 00:32:33,279
چه کاری انجام می دهد، اگر اینطور است، لطفاً
1042
00:32:33,279 –> 00:32:34,640
به اینجا بروید و این را بخوانید خیلی خوب توضیحات خوبی به شما می دهد،
1043
00:32:34,640 –> 00:32:36,399
1044
00:32:36,399 –> 00:32:38,320
پس اکنون ما به اینجا بازگشته ایم و باید
1045
00:32:38,320 –> 00:32:39,840
کار در این
1046
00:32:39,840 –> 00:32:41,760
فایل پیکربندی را شروع کنیم و چند مورد از این
1047
00:32:41,760 –> 00:32:44,159
جنبه های مهم را درک کنیم، بنابراین می توانیم از آن
1048
00:32:44,159 –> 00:32:45,840
برای الگوریتم منظم خود استفاده کنیم، بنابراین اجازه دهید
1049
00:32:45,840 –> 00:32:47,519
این فایل را در اینجا مرور
1050
00:32:47,519 –> 00:32:48,799
کنیم. سه
1051
00:32:48,799 –> 00:32:50,000
چیز مهمی هستند که می خواهید به آنها نگاهی بیندازید
1052
00:32:50,000 –> 00:32:51,760
، بنابراین فقط در اینجا توجه کنید
1053
00:32:51,760 –> 00:32:54,240
معیار تناسب اندام این است که به ما می گوید
1054
00:32:54,240 –> 00:32:56,480
اساساً چه زمانی به آستانه تناسب اندام می رسیم،
1055
00:32:56,480 –> 00:32:58,320
بنابراین نحوه توضیح من به نوعی گیج کننده است،
1056
00:32:58,320 –> 00:32:59,840
اما آستانه تناسب اندام
1057
00:32:59,840 –> 00:33:00,880
زمانی است که ما الگوریتم را متوقف خواهیم کرد
1058
00:33:00,880 –> 00:33:03,360
و اگر این حداکثر باشد، به این معنی است
1059
00:33:03,360 –> 00:33:05,679
که وقتی حداقل یک ژنوم به این مقدار رسیدیم،
1060
00:33:05,679 –> 00:33:07,760
بنابراین زمانی که یک ژنوم
1061
00:33:07,760 –> 00:33:10,080
تناسب 400 یا بیشتر داشته باشد، ما متوقف میشویم، این
1062
00:33:10,080 –> 00:33:12,000
همان چیزی است که حداکثر به این معنی است که اگر
1063
00:33:12,000 –> 00:33:14,480
منظورم این است که به این معنی است که وقتی
1064
00:33:14,480 –> 00:33:16,640
همه ژنومهایم دارای میانگین
1065
00:33:16,640 –> 00:33:18,880
تناسب اندام 400 باشند، متوقف میشوم و
1066
00:33:18,880 –> 00:33:21,120
اگر این حداقل را ایجاد کنم، به این معنی است که یک بار
1067
00:33:21,120 –> 00:33:23,200
حداقل ژنومی که من دارم
1068
00:33:23,200 –> 00:33:25,279
تناسب اندام 400 داشته باشد، متوقف میشوم. بنابراین من میخواهم
1069
00:33:25,279 –> 00:33:27,120
دوباره به حداکثر برسد، به محض
1070
00:33:27,120 –> 00:33:29,200
اینکه یک ژنوم منفرد را با تناسب
1071
00:33:29,200 –> 00:33:31,840
بالای 400 پیدا کردم، الگوریتم را متوقف میکنیم و سپس
1072
00:33:31,840 –> 00:33:33,120
آن ژنوم را برمیگردانیم و این
1073
00:33:33,120 –> 00:33:35,120
نوع هوش مصنوعی ما خواهد بود،
1074
00:33:35,120 –> 00:33:36,799
آنگاه اندازه جمعیت، همان چیزی است که
1075
00:33:36,799 –> 00:33:38,880
اندازه پاپ مخفف آن است. چه تعداد از
1076
00:33:38,880 –> 00:33:40,720
جمعیت خود را می خواهیم من با 50 نفر می رویم
1077
00:33:40,720 –> 00:33:42,799
و روشی که می خواهیم این را آزمایش کنیم این
1078
00:33:42,799 –> 00:33:44,240
است که اگر این را افزایش دهید
1079
00:33:44,240 –> 00:33:46,000
به طور تصاعدی مدت زمان
1080
00:33:46,000 –> 00:33:48,720
لازم برای دویدن را افزایش می دهد بنابراین آموزش از قبل این ai
1081
00:33:48,720 –> 00:33:50,960
می تواند شما را ببرد. بدانید که 20 دقیقه در ساعت
1082
00:33:50,960 –> 00:33:52,159
1083
00:33:52,159 –> 00:33:54,080
بسته به مدت زمانی که آن را اجرا می کنید زمان زیادی می برد، بنابراین
1084
00:33:54,080 –> 00:33:55,519
اگر این را بزرگتر کنید
1085
00:33:55,519 –> 00:33:57,600
به طور قابل توجهی بیشتر طول می کشد، بنابراین
1086
00:33:57,600 –> 00:33:59,600
توصیه می کنم آن را در حدود 50 نگه دارید اما
1087
00:33:59,600 –> 00:34:00,960
می توانید با مقدار بالاتر آن را خراب کنید.
1088
00:34:00,960 –> 00:34:03,200
مقادیر پایین تر من تفاوت
1089
00:34:03,200 –> 00:34:05,200
زیادی در عملکرد ایجاد نمی کنم، اما سرعت بله
1090
00:34:05,200 –> 00:34:06,640
، بنابراین فکر می کنم 50 حداقل خوبی است
1091
00:34:06,640 –> 00:34:08,560
برای حفظ آن در برخی از شما ممکن است
1092
00:34:08,560 –> 00:34:11,199
بخواهید آن را در 100 یا 150 انجام دهید، اما در
1093
00:34:11,199 –> 00:34:12,719
حال حاضر فقط بروید با 50. و به
1094
00:34:12,719 –> 00:34:14,239
هر حال همه چیز در این فایل لطفاً خیلی
1095
00:34:14,239 –> 00:34:15,359
راحت آن را تغییر دهید
1096
00:34:15,359 –> 00:34:16,800
، این فقط پیشفرض است که
1097
00:34:16,800 –> 00:34:18,639
من درست از وبسایت منظم برداشتم
1098
00:34:18,639 –> 00:34:20,879
و فقط چند چیز را اصلاح کردم،
1099
00:34:20,879 –> 00:34:23,280
بنابراین در ادامه نمیخواهم
1100
00:34:23,280 –> 00:34:24,879
بسیاری از این موارد را دوباره توضیح دهم، میتوانید
1101
00:34:24,879 –> 00:34:26,800
مستندات برای دیدن آن، اما من میخواهم
1102
00:34:26,800 –> 00:34:29,119
به ژنوم پیشفرض بروم، اکنون ژنوم پیشفرض
1103
00:34:29,119 –> 00:34:30,960
، باید چند چیز را
1104
00:34:30,960 –> 00:34:32,560
در اینجا اصلاح کنیم، زیرا باید بگوییم
1105
00:34:32,560 –> 00:34:34,239
تعداد لایههای ورودی و لایههای خروجی
1106
00:34:34,239 –> 00:34:36,079
و همه این موارد را تنظیم کنید و ما نیز
1107
00:34:36,079 –> 00:34:38,159
تغییر میدهیم. تابع فعالسازی، بنابراین من
1108
00:34:38,159 –> 00:34:39,280
لزوماً توضیح نمیدهم که
1109
00:34:39,280 –> 00:34:41,040
تابع فعالسازی چیست، اما
1110
00:34:41,040 –> 00:34:43,280
اساساً کاری که انجام میدهد این است که
1111
00:34:43,280 –> 00:34:46,079
نتیجه را از یک گره خاص میگیرد و فقط
1112
00:34:46,079 –> 00:34:48,480
آن را به مقدار دیگری تبدیل میکند، بنابراین
1113
00:34:48,480 –> 00:34:50,320
من نتیجه را از یک گره از طریق
1114
00:34:50,320 –> 00:34:52,320
فعالسازی اجرا میکنم. تابع سپس من آن
1115
00:34:52,320 –> 00:34:54,399
مقدار را به گره بعدی منتقل می کنم و این باعث می
1116
00:34:54,399 –> 00:34:55,440
شود که مقادیر ما
1117
00:34:55,440 –> 00:34:57,520
در یک محدوده خاص قرار بگیرند، در این حالت
1118
00:34:57,520 –> 00:34:59,119
من تابع فعال سازی را
1119
00:34:59,119 –> 00:35:01,599
از پیش فرض sigmoid به u تغییر داده ام که
1120
00:35:01,599 –> 00:35:04,480
یک واحد خطی و thi است. عملکرد s
1121
00:35:04,480 –> 00:35:05,760
در واقع من یک عکس از آن را در اینجا
1122
00:35:05,760 –> 00:35:07,839
دارم، فقط آن را بالا می کشم اوه این تابع relu
1123
00:35:07,839 –> 00:35:09,280
است اوه
1124
00:35:09,280 –> 00:35:10,880
خوب البته شما می دانید که می توانید آن را
1125
00:35:10,880 –> 00:35:12,480
در سمت راست صفحه نمایش من ببینید و
1126
00:35:12,480 –> 00:35:14,079
فقط آن را به حداقل مقدار می رساند ما
1127
00:35:14,079 –> 00:35:17,119
احتمالاً داریم صفر است خوب است که rel u
1128
00:35:17,119 –> 00:35:18,720
uh sigmoid یک تابع متفاوت است، بنابراین
1129
00:35:18,720 –> 00:35:20,720
من اینها را به مقدار
1130
00:35:20,720 –> 00:35:22,480
تغییر دادم که تنها تغییری است که در
1131
00:35:22,480 –> 00:35:24,880
اینجا ایجاد کرده ام هیچ تغییری ایجاد نکرده
1132
00:35:24,880 –> 00:35:26,640
ام همه این موارد دیگر مانند خوب است
1133
00:35:26,640 –> 00:35:28,160
که احتمال اینکه ما چقدر است اضافه کردن یک
1134
00:35:28,160 –> 00:35:30,800
گره یا حذف یک گره یا همه اینها و
1135
00:35:30,800 –> 00:35:32,400
ادامه به جایی که واقعاً میخواهیم به آن نگاه کنیم
1136
00:35:32,400 –> 00:35:33,760
این است
1137
00:35:33,760 –> 00:35:35,440
که دقیقاً در اینجا کجا بود
1138
00:35:35,440 –> 00:35:37,599
پارامترهای شبکه خوب این چیزی است که
1139
00:35:37,599 –> 00:35:39,280
ما در حال حاضر به آن اهمیت میدهیم، بنابراین
1140
00:35:39,280 –> 00:35:40,720
باید مطمئن شویم که آنها را تغییر میدهیم و آنها
1141
00:35:40,720 –> 00:35:42,640
قبلاً این کار را انجام خواهند داد. برای شما تغییر داده شود، بنابراین
1142
00:35:42,640 –> 00:35:44,480
تعداد ورودیها سه و تعداد
1143
00:35:44,480 –> 00:35:46,000
خروجیها سه است،
1144
00:35:46,000 –> 00:35:47,760
اکنون تعداد
1145
00:35:47,760 –> 00:35:49,200
لایههای پنهان تعداد لایههای پنهانی است که میخواهید به طور پیشفرض با آن شروع کنید،
1146
00:35:49,200 –> 00:35:51,920
در این مورد من با دو میروم،
1147
00:35:51,920 –> 00:35:53,599
اما میتوانید این را به تغییر دهید. یک
1148
00:35:53,599 –> 00:35:55,920
سه هر چه صفر o مجدداً یک
1149
00:35:55,920 –> 00:35:57,599
مقدار تصادفی است که من انتخاب کردهام و
1150
00:35:57,599 –> 00:35:59,359
در طول زمان
1151
00:35:59,359 –> 00:36:00,960
با اعمال جهشها در شبکه عصبی تغییر میکند، بنابراین
1152
00:36:00,960 –> 00:36:02,400
فقط سه سه را انتخاب
1153
00:36:02,400 –> 00:36:03,520
کنید و میدانید که میتوانید این مقدار را به هم بزنید، آن را
1154
00:36:03,520 –> 00:36:05,280
یکی کنید آن را دو کنید و آن را سه کنید. هر چیزی که
1155
00:36:05,280 –> 00:36:06,960
من فقط فعلاً آن را دو می کنم بسیار خوب،
1156
00:36:06,960 –> 00:36:08,480
بنابراین آخرین چیزی که در این فایل پیکربندی توضیح داده می
1157
00:36:08,480 –> 00:36:10,720
شود،
1158
00:36:10,720 –> 00:36:12,400
اطمینان حاصل کنید که دوباره درست است، برای شما هم صادق خواهد بود،
1159
00:36:12,400 –> 00:36:14,400
اما من این را از
1160
00:36:14,400 –> 00:36:16,640
نادرست به درست تغییر داده ام. این است
1161
00:36:16,640 –> 00:36:18,160
که ما فقط یک
1162
00:36:18,160 –> 00:36:20,079
شبکه عصبی معمولی دریافت میکنیم که در آن ورودیها را تغذیه میکنیم و
1163
00:36:20,079 –> 00:36:22,160
یک خروجی دریافت میکنیم اگر این را نادرست
1164
00:36:22,160 –> 00:36:23,359
کنید، چیزی به نام شبکه عصبی تکراری دریافت میکنید
1165
00:36:23,359 –> 00:36:25,680
که به این معنی است که خروجی
1166
00:36:25,680 –> 00:36:27,599
تماس قبلی با شبکه
1167
00:36:27,599 –> 00:36:29,920
عصبی یک ورودی برای تماس بعدی باشید
1168
00:36:29,920 –> 00:36:31,680
و این بدین معنی است که شما می توانید
1169
00:36:31,680 –> 00:36:33,440
اطلاعاتی را ذخیره کنید که می توانید مانند
1170
00:36:33,440 –> 00:36:34,800
تاریخچه شبکه عصبی ذخیره کنید، اگر
1171
00:36:34,800 –> 00:36:36,480
منطقی است، ما در
1172
00:36:36,480 –> 00:36:37,680
اینجا به آن اهمیتی نمی دهیم و اگر این کار را انجام دهید، به
1173
00:36:37,680 –> 00:36:39,599
دست خواهید آورد. برخی از نتایج عجیب و غریب پس فقط این را انجام دهید
1174
00:36:39,599 –> 00:36:41,599
rue و سپس اتصال اولیه به طور کامل
1175
00:36:41,599 –> 00:36:43,680
مستقیم به این معنی است که ما
1176
00:36:43,680 –> 00:36:45,599
بین هر
1177
00:36:45,599 –> 00:36:47,040
گره منفرد اتصالات مستقیم داریم، بنابراین یک گره کاملاً متصل داریم
1178
00:36:47,040 –> 00:36:49,200
هر گره در لایه ورودی
1179
00:36:49,200 –> 00:36:50,320
به هر گره در لایه پنهان
1180
00:36:50,320 –> 00:36:51,839
هر گره در لایه پنهان
1181
00:36:51,839 –> 00:36:54,640
هر گره متصل است. در لایه خروجی بسیار خوب است،
1182
00:36:54,640 –> 00:36:56,079
بنابراین حالا بیایید در واقع از
1183
00:36:56,079 –> 00:36:57,920
فایل پیکربندی استفاده کنیم، بنابراین برای انجام این
1184
00:36:57,920 –> 00:37:00,560
کار میگویم import neat و
1185
00:37:00,560 –> 00:37:03,359
همچنین سیستم عامل را وارد میکنم فقط به این دلیل که
1186
00:37:03,359 –> 00:37:05,200
باید مسیر
1187
00:37:05,200 –> 00:37:07,040
فایل پیکربندی را برای بارگیری پیدا کنیم. سپس می خواهم به
1188
00:37:07,040 –> 00:37:08,960
اینجا بیایم، می خواهم بگویم اگر
1189
00:37:08,960 –> 00:37:10,880
نام خط زیر با زیر
1190
00:37:10,880 –> 00:37:12,240
اسکادران مربع اصلی برابر است، فقط مطمئن شوید
1191
00:37:12,240 –> 00:37:13,839
که ما این فایل را اجرا کرده ایم نه اینکه آن را
1192
00:37:13,839 –> 00:37:15,760
وارد کرده ایم،
1193
00:37:15,760 –> 00:37:17,440
فایل پیکربندی را بارگیری می کنم، بنابراین من می خواهم بگویم
1194
00:37:17,440 –> 00:37:20,400
که فهرست محلی من برابر است
1195
00:37:20,400 –> 00:37:22,640
با os.path
1196
00:37:22,640 –> 00:37:24,480
dot der name و سپس در زیر
1197
00:37:24,480 –> 00:37:26,640
فایل زیر خط مربع زیر خط squad
1198
00:37:26,640 –> 00:37:28,400
با حروف کوچک این یک
1199
00:37:28,400 –> 00:37:30,079
متغیر ویژه است فقط فایل فعلی را به شما می دهد
1200
00:37:30,079 –> 00:37:32,000
من می توانم دایرکتوری را دریافت کنم. نام آن و
1201
00:37:32,000 –> 00:37:34,000
سپس کاری که من می خواهم انجام دهم این است که بگویم
1202
00:37:34,000 –> 00:37:36,480
مسیر پیکربندی
1203
00:37:36,480 –> 00:37:40,079
برابر با os.path.join است
1204
00:37:40,079 –> 00:37:41,200
و من می خواهم به فهرست محلی با config.txt بپیوندم.
1205
00:37:41,200 –> 00:37:44,000
1206
00:37:44,000 –> 00:37:45,599
1207
00:37:45,599 –> 00:37:46,720
شما نام این را تغییر
1208
00:37:46,720 –> 00:37:48,160
میدهید، باید آن را تغییر دهید، اما
1209
00:37:48,160 –> 00:37:49,280
من فرض میکنم که بیشتر شما با
1210
00:37:49,280 –> 00:37:51,680
کد شروع کار میکنید، اکنون که
1211
00:37:51,680 –> 00:37:53,760
ما داریم که میخواهیم بگوییم پیکربندی برابر با
1212
00:37:53,760 –> 00:37:55,760
پیکربندی نقطهای است
1213
00:37:55,760 –> 00:37:57,839
و در واقع اجازه دهید من فقط
1214
00:37:57,839 –> 00:37:58,880
این را در
1215
00:37:58,880 –> 00:38:00,240
ah کپی کنید زیرا کمی سادهتر
1216
00:38:00,240 –> 00:38:02,240
از تایپ کردن همه اینها خواهد بود،
1217
00:38:02,240 –> 00:38:03,760
پس ما میخواهیم بگوییم که نقطه
1218
00:38:03,760 –> 00:38:06,640
منظم ژنوم پیشفرض تولید مثل منظم
1219
00:38:06,640 –> 00:38:09,280
پیشفرض پیشفرض منظم bc تنظیم رکود پیشفرض منظم
1220
00:38:09,280 –> 00:38:11,440
و سپس مسیر پیکربندی
1221
00:38:11,440 –> 00:38:12,800
این را نیز توضیح نمیدهد.
1222
00:38:12,800 –> 00:38:14,320
اساساً ما فقط
1223
00:38:14,320 –> 00:38:15,440
خصوصیات مختلف را از
1224
00:38:15,440 –> 00:38:17,680
فایل پیکربندی که میخواهیم استفاده کنیم منتقل میکنیم،
1225
00:38:17,680 –> 00:38:19,520
منظورم این است که اگر میخواهید میتوانید این را بخوانید،
1226
00:38:19,520 –> 00:38:20,560
اما اینها مواردی هستند که میخواهیم
1227
00:38:20,560 –> 00:38:21,920
از درست پیشفرض ژنوم پیشفرض استفاده
1228
00:38:21,920 –> 00:38:23,839
1229
00:38:23,839 –> 00:38:25,119
کنیم. من نیاز دارم مطمئن شوید که
1230
00:38:25,119 –> 00:38:26,560
همه آنها در فایل پیکربندی من
1231
00:38:26,560 –> 00:38:28,720
هستند و هستند و در نهایت
1232
00:38:28,720 –> 00:38:30,640
مسیر پیکربندی خود را رد میکنم، بنابراین اکنون
1233
00:38:30,640 –> 00:38:32,640
فایل پیکربندی را بارگذاری کردهام، اکنون به فایل پیکربندی نیاز داریم
1234
00:38:32,640 –> 00:38:34,240
تا در واقع یک شبکه عصبی ایجاد کنیم،
1235
00:38:34,240 –> 00:38:35,599
بنابراین این همان چیزی است که باید
1236
00:38:35,599 –> 00:38:37,760
آن را بارگیری میکنیم. خوب حالا که آن را بارگذار