در این مطلب، ویدئو پیاده سازی کانولوشن 1 بعدی، قسمت 1: پیچیدگی در پایتون از ابتدا با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:05:44
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,799 –> 00:00:02,800
بیشتر اوقات برای
2
00:00:02,800 –> 00:00:04,400
بهینه سازی کد
3
00:00:04,400 –> 00:00:07,040
شما هزینه ای ندارد مگر اینکه عملیات یا
4
00:00:07,040 –> 00:00:08,720
تابعی داشته باشید که قرار است زیاد فراخوانی شود
5
00:00:08,720 –> 00:00:12,799
، این مورد در مورد کانولوشن
6
00:00:12,799 –> 00:00:14,639
در شبکه عصبی کانولوشن یک بعدی
7
00:00:14,639 –> 00:00:17,279
است، عملیات کانولوشن
8
00:00:17,279 –> 00:00:20,640
بسیار اجرا می شود. برای هر کرنل
9
00:00:20,640 –> 00:00:22,160
برای هر کانال
10
00:00:22,160 –> 00:00:24,640
چندین بار از طریق شبکه،
11
00:00:24,640 –> 00:00:26,880
با هر تعداد تکرار،
12
00:00:26,880 –> 00:00:28,720
این به طور چشمگیری افزایش می یابد، زمانی که ما به
13
00:00:28,720 –> 00:00:31,039
14
00:00:31,039 –> 00:00:33,200
جای انحراف در امتداد یک محور، به پیچیدگی های دو بعدی می
15
00:00:33,200 –> 00:00:34,160
رویم، در حال پیچیدن
16
00:00:34,160 –> 00:00:36,719
در امتداد دو محور هستیم، بنابراین هر چند کانولوشن
17
00:00:36,719 –> 00:00:38,079
را قبل از انجام انجام دهیم. ما
18
00:00:38,079 –> 00:00:39,760
مربع آن را در پیچیدگی دو بعدی انجام می دهیم
19
00:00:39,760 –> 00:00:41,440
20
00:00:41,440 –> 00:00:43,040
و در یک انحراف سه بعدی
21
00:00:43,040 –> 00:00:45,120
، مکعب آن عدد
22
00:00:45,120 –> 00:00:48,800
را انجام می دهیم، بنابراین خیلی سریع بزرگ می شود، ارزش این را دارد
23
00:00:48,800 –> 00:00:49,840
که مراقب باشید
24
00:00:49,840 –> 00:00:51,760
و هیچ کار احمقانه ای انجام ندهید.
25
00:00:51,760 –> 00:00:54,160
26
00:00:54,160 –> 00:00:55,360
راه برای پیاده سازی یک
27
00:00:55,360 –> 00:00:57,360
کانولوشن این است که با یک حلقه for
28
00:00:57,360 –> 00:00:59,600
ما یک کار را بارها و
29
00:00:59,600 –> 00:01:01,280
بارها در موقعیت کمی متفاوت انجام می دهیم
30
00:01:01,280 –> 00:01:02,239
هر بار
31
00:01:02,239 –> 00:01:05,199
که مورد ایده آل برای حلقه for باشد. تنها
32
00:01:05,199 –> 00:01:05,600
33
00:01:05,600 –> 00:01:08,799
مشکل این است که در پایتون، حلقههای for در پایتون بومی
34
00:01:08,799 –> 00:01:09,920
بسیار کند هستند
35
00:01:09,920 –> 00:01:13,840
، راهحل رایجترین راه حل این
36
00:01:13,840 –> 00:01:17,360
است که کد
37
00:01:17,360 –> 00:01:18,159
خود را بردارید، بنابراین آن را به آرایه تبدیل کنید
38
00:01:18,159 –> 00:01:21,280
و سپس از
39
00:01:21,280 –> 00:01:23,759
رایجترین ابزار numpy برای این کار استفاده کنید تا
40
00:01:23,759 –> 00:01:24,560
آن
41
00:01:24,560 –> 00:01:26,400
آرایهها و آرایههای دو بعدی را ضرب کنید.
42
00:01:26,400 –> 00:01:28,640
آرایههای سهبعدی توسط یکدیگر
43
00:01:28,640 –> 00:01:31,200
این کار را بسیار کارآمد انجام میدهند،
44
00:01:31,200 –> 00:01:33,360
در آن بسیار خوب است،
45
00:01:33,360 –> 00:01:36,799
46
00:01:36,799 –> 00:01:37,680
47
00:01:37,680 –> 00:01:40,720
اگر بخواهیم کنترل بیشتری بر نحوه انجام
48
00:01:40,720 –> 00:01:42,479
کانولوشن
49
00:01:42,479 –> 00:01:44,399
داشته باشیم، همیشه آسان نیست
50
00:01:44,399 –> 00:01:46,560
که
51
00:01:46,560 –> 00:01:49,040
کد را برداریم تا حداکثر
52
00:01:49,040 –> 00:01:50,560
انعطافپذیری را
53
00:01:50,560 –> 00:01:54,240
داشته باشیم. از تکیه بر numpy برای کانولوشن عقب نشینی کنید
54
00:01:54,240 –> 00:01:57,680
و
55
00:01:57,680 –> 00:02:00,560
ما کمی بیشتر از یک
56
00:02:00,560 –> 00:02:02,479
راه حل دستی استفاده
57
00:02:02,479 –> 00:02:05,119
خواهیم کرد، ابزار مورد علاقه ما برای این کار
58
00:02:05,119 –> 00:02:06,479
عدد
59
00:02:06,479 –> 00:02:08,639
است که ارتباط نزدیکی با numpy دارد،
60
00:02:08,639 –> 00:02:10,160
اغلب با numpy بسته بندی می شود و
61
00:02:10,160 –> 00:02:11,920
با آناکوندا توزیع
62
00:02:11,920 –> 00:02:14,800
می شود و هر دو توسط آن پشتیبانی می شوند. num
63
00:02:14,800 –> 00:02:16,000
focus بسته ای است
64
00:02:16,000 –> 00:02:18,959
که کد بومی پایتون را می گیرد و
65
00:02:18,959 –> 00:02:20,800
آن را
66
00:02:20,800 –> 00:02:23,920
به کد c کامپایل می کند که بسیار سریع اجرا می شود
67
00:02:23,920 –> 00:02:27,200
و در زمان تنظیم می شود. iler جایی است که جیت
68
00:02:27,200 –> 00:02:28,879
از اینجا
69
00:02:28,879 –> 00:02:32,160
در موتور می آید به این معنی که اولین باری که
70
00:02:32,160 –> 00:02:35,519
پایتون با این کد روبرو می شود
71
00:02:35,519 –> 00:02:37,040
، کار را متوقف می کند که انجام
72
00:02:37,040 –> 00:02:40,480
می دهد کل کد اعداد
73
00:02:40,480 –> 00:02:45,040
را به یک بلوک کد c خام کامپایل می