پایتورچ برای یادگیری عمیق
ترجمه فصل اول کتاب Deep Learning with PyTorch
قسمت دوم
۱.۲ پایتورچ برای یادگیری عمیق
پایتورچ یک کتابخانه برای برنامههای پایتون است که ایجاد پروژههای یادگیری عمیق را تسهیل میدهد. این کتابخانه بر انعطاف پذیری تاکید دارد و به ما امکان میدهد مدلهای یادگیری عمیق را به زبان پایتونی نمایش دهیم. این رویکرد و سهولت استفاده از ابتدا دستیافتهها را در جامعه تحقیقاتی پیدا کرده است و در سالهای پس از انتشار اولیهاش، به یکی از برجستهترین ابزارهای یادگیری عمیق در گستره گستردهای از برنامهها تبدیل شده است.
همانطور که پایتون برای برنامهنویسی کاربردی است، پایتورچ معرفی عالیای به یادگیری عمیق ارائه میدهد. در عین حال، ثابت شده است که پایتورچ کاملاً صلاحیت دارد برای استفاده در محیطهای حرفهای برای کارهای واقعی و با رویکرد بالا. ما اعتقاد داریم که دستورالعملهای واضح پایتورچ، واسط API ساده و امکانات رفع اشکال آسان آن، آن را به یک انتخاب عالی برای معرفی یادگیری عمیق میکند. ما بسیار پیشنهاد میکنیم که برای اولین کتابخانه یادگیری عمیق خود، مطالعه پایتورچ را پیشنهاد کنیم. اینکه آیا باید آخرین کتابخانه یادگیری عمیقی که یاد میگیرید باشد، یک تصمیم است که به شما واگذار میکنیم.
در اصل، دستگاه یادگیری عمیق در شکل ۱.۱ یک تابع ریاضی نسبتاً پیچیده است که ورودیها را به خروجی مینگارد. برای تسهیل در نمایش این تابع، پایتورچ یک ساختار داده اصلی، به نام تانسور، را فراهم میکند که یک آرایه چند بعدی است که اشتراکات زیادی با آرایههای NumPy دارد. پیرامون این پایه، پایتورچ با ویژگیهایی برای انجام عملیات ریاضی سریع بر روی سختافزارهای اختصاصی میآید که امکان طراحی معماریهای شبکههای عصبی و آموزش آنها را بر روی دستگاههای تکی یا منابع محاسباتی موازی فراهم میکند.
این کتاب به عنوان یک نقطه شروع برای مهندسان نرمافزار، دانشمندان داده و دانشجویان مشتاق که به زبان پایتون مسلط هستند، برای انعطافپذیر شدن با استفاده از پایتورچ برای ایجاد پروژههای یادگیری عمیق طراحی شده است. ما میخواهیم این کتاب به اندازه ممکن قابل دسترس و مفید باشد، و انتظار میرود که شما بتوانید مفاهیم موجود در این کتاب را بگیرید و آنها را به حوزههای دیگری اعمال کنید. به این منظور، ما از رویکرد عملی استفاده میکنیم و شما را به کنار کامپیوتر خود دعوت میکنیم، تا بتوانید با مثالها بازی کنید و آنها را یک گام جلوتر ببرید. تا زمانی که این کتاب را به پایان میرسانیم، انتظار داریم که بتوانید یک منبع داده را بگیرید و با آن یک پروژه یادگیری عمیق ایجاد کنید که توسط اسناد رسمی عالی پایتورچ پشتیبانی شود.
شکل ۱.۲ ساختار پایه و سطح بالای یک پروژه PyTorch، با بارگیری داده، آموزش و راهاندازی به تولیدات
در چپ شکل ۱.۲، مشاهده میکنیم که قبل از اینکه دادههای آموزشی به مدل ما برسند، نیاز به پردازش زیادی داریم. ابتدا باید دادهها را فیزیکی به دست آوریم، بیشتر اوقات از یک نوع ذخیرهسازی به عنوان منبع داده. سپس باید هر نمونه از دادههایمان را به چیزی که PyTorch بتواند مدیریت کند، یعنی تنسورها، تبدیل کنیم. این پل بین دادههای سفارشی ما (در هر فرمتی که ممکن است باشد) و یک تنسور استاندارد، کلاس مجموعهدادهها که PyTorch در torch.utils.data ارائه میدهد، است. چون این فرآیند از یک مسئله به مسئله بسیار متفاوت است، ما باید خودمان این فرآیند را پیادهسازی کنیم. ما در فصل ۴ به جزئیات نحوه نمایش انواع مختلف دادههایی که ممکن است بخواهیم با آنها کار کنیم، به عنوان تنسورها خواهیم پرداخت.
زیرا ذخیرهسازی داده اغلب کند است، به ویژه به دلیل تأخیر دسترسی، ما میخواهیم فرآیند بارگیری داده را موازی کنیم. اما زیرا که اینکار یکی از چیزهایی نیست که Python به عنوان دلیلی برای دوست داشتن شناخته میشود، برای بارگیری دادههای خود به چندین فرآیند نیاز داریم، تا بتوانیم آنها را به دستهها: تنسورهایی که شامل چندین نمونه هستند، تجمیع کنیم. این امر نسبتاً پیچیده است؛ اما چون نسبتاً عمومی است، PyTorch به سرعت تمام آن سحر و جادو را ارائه میدهد کلاس DataLoader. نمونههای آن میتوانند فرآیندهای فرعی را ایجاد کنند تا دادهها را از مجموعهداده به پس زمینه بارگیری کنند تا زمانی که حلقه آموزش آن را میتواند استفاده کند، آنها آماده و منتظر باشند. ما در فصل ۷ با کلاس Dataset و DataLoader آشنا میشویم و از آنها استفاده میکنیم.
خلاصه:
- مدلهای یادگیری عمیق به طور خودکار یاد میگیرند که چگونه ورودیها را با خروجیهای مطلوب ارتباط دهند از طریق نمونهها.
- کتابخانههایی مانند PyTorch به شما اجازه میدهند تا به طور کارآمد مدلهای شبکههای عصبی را ساخته و آموزش دهید.
- PyTorch کاهش بار شناختی را حداقل میکند در حالی که بر انعطافپذیری و سرعت تمرکز دارد. همچنین به طور پیشفرض برای اجرای فوری برای عملیات است.
- TorchScript به ما اجازه میدهد تا مدلها را پیشاجرا کرده و آنها را نه تنها از زبان پایتون بلکه همچنین از برنامههای C++ و روی دستگاههای همراه فراخوانی کنیم.
- از زمان انتشار PyTorch در اوایل سال ۲۰۱۷، اکوسیستم ابزارهای یادگیری عمیق به طور قابل توجهی کonsolidated تر شده است.
- PyTorch تعدادی از کتابخانههای ابزاری را ارائه میدهد تا پروژههای یادگیری عمیق را تسهیل کند.