۱۳ کتابخانه یادگیری عمیق پایتون – راهنمای کاربردی
هنگامی که صحبت از «یادگیری ماشین» (Machine Learning)، «هوش مصنوعی» (Artificial Intelligence)، «یادگیری عمیق» (Deep Learning) و وظایف «علم داده» (Data Science) میشود زبان برنامهنویسی «پایتون» (Python) همچنان پیشگام است. مطابق آمار ارائه شده توسط سایت «builtwith» (+)، بالغ بر ٪۴۵ از شرکتهای فناوری استفاده از پایتون را برای پیادهسازی هوشمصنوعی و یادگیری ماشین ترجیح میدهند. از این رو در مطلب «۸ کتابخانه یادگیری ماشین پایتون -- راهنمای کاربردی» برخی از کتابخانههای پایتون که در حوزه یادگیری ماشین مورد استفاده قرار میگیرند، معرفی شدند. در این مطلب نیز ۱۳ کتابخانه یادگیری عمیق پایتون بررسی خواهند شد.
البته، این کتابخانهها ممکن است در زمینههای گوناگونی مورد استفاده قرار بگیرند. برای مثال، کتابخانه نرمافزاری متنباز «تنسورفلو» (Tensorflow) در حوزه یادگیری ماشین کاربرد دارد و «کِرَس» (Keras) کتابخانه متنباز شبکه عصبی و قابل اجرا روی تنسورفلو یا «ثینو» (Theano) است. اما با وجود معرفی کردن تنسورفلو در این لیست، کِرَس در اینجا معرفی نشده و در مطلب «۸ کتابخانه یادگیری ماشین پایتون» آورده شده است، زیرا تنسورفلو بیشتر توسط افرادی مانند پژوهشگران و مهندسان یادگیری ماشین مورد استفاده قرار میگیرد؛ در حالیکه کِرَس مانند «سایکیت لِرن» (scikit-learn) بیشتر کتابخانهای برای «کاربر نهایی» محسوب میشود.
در ادامه لیست این ۱۳ کتابخانه ارائه شده است (آمارهای ارائه شده از گیتهاب تا تاریخ یکم آبان ۱۳۹۷ معتبر هستند).
۱. تنسورفلو (TensorFlow)
(+) (مشارکتکنندگان: ۱۷۰۰ نفر، کامیتها: ۴۲۲۵۶، ستارهها: ۱۱۲۵۹۱)
تنسورفلو یک کتابخانه متنباز برای محاسبات عددی با استفاده از گرافهای جریان داده است. گرههای گراف عملیات ریاضی را نشان میدهند، در حالیکه یالهای گراف بیانگر آرایههای داده چند بُعدی (تانسورها) هستند که بین آنها جریان دارد. این معماری انعطافپذیر کاربر را قادر به تفویض محاسبات در یک یا تعداد بیشتری CPU یا GPU در یک «کامپیوتر رومیزی» (desktop Computer)، «سرور» (Server) یا دستگاه موبایل بدون بازنویسی کدها میسازد.
2. پایتورچ (PyTorch)
(+) (مشارکتکنندگان: ۸۰۶ نفر، کامیتها: ۱۴۰۲۲، ستارهها: ۲۰۲۴۳)
پایتورچ (PyTorch) یک بسته پایتون است که دو ویژگی سطح بالا که در زیر بیان شدهاند را فراهم میکند.
- محاسبات تانسور (مانند NumPy) با شتابدهی قدرتمند GPU
- شبکههای عصبی عمیق ساخته شده روی یک سیستم مبتنی بر نوار autograd
کاربر میتواند از بستههای پایتون محبوب خود مانند SciPy ،NumPy و Cython جهت توسعه PyTorch در هنگام نیاز استفاده مجدد کند.
۳. آپاچی اماکسنت (Apache MXNet)
(+) (مشارکتکنندگان: ۶۲۸ نفر، کامیتها: ۸۷۲۳، ستارهها: ۱۵۴۴۷)
آپاچی اماکسنت (Apache MXNet) (انکوباسیون) یک چارچوب یادگیری عمیق طراحی شده برای کارایی و انعطافپذیری است. این چارچوب کاربر را قادر به ترکیب «برنامهنویسی دستوری» (Imperative Programming) و «برنامهنویسی نمادین» (Symbolic Programming) برای بیشینهسازی کارایی و بهرهوری میسازد. آپاچی اماکسنت در هسته خود یعنی MXNet دارای برنامهریزی وابستگی پویا است که به طور خودکار عملیات نمادین و دستوری را موازیسازی میکند.
۴. ثینو (Theano)
(+) (مشارکتکنندگان: ۳۲۹ نفر، کامیتها: ۲۸۰۳۳، ستارهها: ۸۵۳۶)
ثینو (Theano) یک کتابخانه پایتون است که به کاربر امکان تعریف، بهینهسازی و ارزیابی عبارات ریاضی شامل آرایههای چندبُعدی را به صورت موثر میدهد. این کتابخانه میتواند از GPU استفاده کند و «مشتق نمادین» (Symbolic Differentiation) (منظور مشتق پارامتری است) را به صورت کارا انجام دهد.
۵. کافه (Caffe)
(+) (مشارکتکنندگان: ۲۷۰ نفر، کامیتها: ۴۱۵۲، ستارهها: ۲۵۹۲۷)
کافه (Convolutional Architecture for Fast Feature Embedding | معماری پیچشی برای جاسازی ویژگی سریع)، یک چارچوب یادگیری عمیق ساخته شده با در نظر داشتن سرعت و ماژولاریتی است. این چارچوب توسط «The Berkeley Vision and Learning Center » ،«Berkeley AI Research» و مشارکتهای جامعه، توسعه یافته است.
۶. fast.ai
(+) (مشارکتکنندگان: ۲۲۶ نفر، کامیتها: ۲۲۳۷، ستارهها: ۸۸۷۲)
کتابخانه fastai آموزش سریع و صحیح شبکههای عصبی را با استفاده از بِهروشها (Best Practices) آسان میسازد. این کتابخانه برپایه پژوهشهای انجام شده روی بِهروشهای یادگیری عمیق در fast.ai ساخته شده است و شامل پشتیبانی خارج از چارچوب برای مدلهای tabular ،text ،vision و collab (پالایش گروهی | collaborative filtering) میشود.
۷. CNTK
(+) (مشارکتکنندگان: ۱۸۹ نفر، کامیتها: ۱۵۹۷۹، ستارهها: ۱۵۲۸۱)
CNTK یا همان «جعبه ابزار شناختی مایکروسافت» (The Microsoft Cognitive Toolkit) یک جعبه ابزار یکپارچهسازی یادگیری عمیق است که شبکههای عصبی را به عنوان دنبالهای از گامهای محاسباتی با گراف جهتدار تشریح میکند. در این گراف مستقیم، گرههای برگ نشانگر مقادیر ورودی یا پارامترهای شبکه هستند، در حالیکه دیگر گرهها نمایانگر عملیات ماتریس روی ورودیهایشان هستند. CNTK به کاربران این امکان رامیدهد که به سادگی انواع مدلهای محبوب مانند «شبکههای عصبی عمیق پیشخور» (feed-forward DNNs)، «شبکههای پیچشی» (Convolutional Nets | CNNs) و «شبکههای بازگشتی» (Recurrent Networks) را تشخیص داده و با یکدیگر ترکیب کند.
۸. TFLearn
(+) (مشارکتکنندگان: ۱۱۸ نفر، کامیتها: ۵۹۹، ستارهها: ۸۶۳۲)
TFlearn یک کتابخانه یادگیری عمیق ماژولار و شفاف ساخته شده بر فراز تنسورفلو است. این کتابخانه طراحی شده تا «رابطه برنامهنویسی کاربردی» (Application Programming Interface | API) سطحبالاتری را برای تنسورفلو به منظور تسهیل و سرعت بخشیدن به آزمایشها در عین شفافیت کامل و سازگاری با آن، فراهم کند.
۹. Lasagne
(+) (مشارکتکنندگان: ۶۴ نفر، کامیتها: ۱۱۵۷ نفر، ستارهها: ۳۵۳۴)
Lasagne یک کتابخانه سبکوزن برای ساخت و آموزش شبکههای عصبی در «ثینو» (Theano) است. این کتابخانه شبکههای پیشخور مانند شبکههای عصبی پیچشی (Convolutional Neural Networks | CNNs)، «شبکههای بازگشتی» (Recurrent Networks) از جمله «حافظه کوتاه مدت بلند» (Long Short-Term Memory | LSTM) و هر گونه ترکیبی از آنها را فراهم میکند.
۱۰. nolearn
(+) (مشارکتکنندگان: ۱۴، کامیتها: ۳۸۹، ستارهها: ۹۰۹)
nolearn شامل تعدادی از پوششها و انتزاعات پیرامون کتابخانههای شبکههای عصبی موجود و برخی از ماژولهای مفید یادگیری ماشین است که از قابل توجهترین آنها میتوان به Lasagne اشاره کرد.
۱۱. Elephas
(+) (مشارکتکنندگان: ۱۳، کامیتها: ۲۴۹، ستارهها: ۱۰۴۶)
Elephas یک افزونه از کِرَس است که کاربر را قادر به اجرای مدلهای یادگیری عمیق توزیع شده در مقیاس «اسپارک» (Spark) میسازد. Elephas در حال حاضر از تعدادی از کاربردها شامل موارد زیر پشتیبانی میکند:
- آموزش داده-موازی مدلهای یادگیری عمیق
- بهینهسازی ابر-پارامتری توزیع شده
- آموزش توزیع شده مدلهای گروهی
۱۲. یادگیری عمیق اسپارک (spark-deep-learning)
(+) (مشارکتکنندگان: ۱۲ نفر، کامیتها: ۸۳، ستارهها: ۱۱۳۱)
سلسله مراحل (پایپلاین) یادگیری عمیق یک رابط برنامهنویسی کاربردی سطح بالا را برای یادگیری عمیق مقیاسپذیر در پایتون با «آپاچی اسپارک» (Apache Spark) فراهم میکند.
این کتابخانه از Databricks نشات میگیرد و از Spark برای دو عنصر قدرتمند خود نیرو گرفته است که در ادامه بیان شدهاند.
- به لطف اسپارک و Spark MLlib، این کتابخانه رابط برنامهنویسی کاربردی با استفاده آسان را فراهم میکند که امکان یادگیری عمیق در چند خط کد را به دست میدهد.
- از موتور توزیع شده قدرتمند اسپارک برای مقیاس بخشیدن به یادگیری عمیق در مجموعهدادههای بزرگ استفاده میکند.
۱۳. کِرَس توزیع شده (Distributed Keras)
(+) (مشارکتکنندگان: 5 نفر، کامیتها: ۱۱۲۵، ستارهها: ۵۲۳)
کِرَس توزیع شده (Distributed Keras) یک چارچوب یادگیری عمیق توزیع شده است. این چارچوب بر فراز آپاچی اسپارک و کِرَس و با تمرکز بر الگوریتمهای بهینهسازی توزیع شده پیشرفته ساخته شده است. Distributed Keras به شیوهای طراحی شده که یک بهینهساز توزیع شده جدید میتواند به آسانی پیادهسازی شود، و بدین ترتیب به کاربر امکان متمرکز شدن روی پژوهش خودش را صرفنظر از پیادهسازی روش میدهد.
اگر نوشته بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشود:
- گنجینه آموزشهای برنامه نویسی پایتون (Python)
- مجموعه آموزشهای آمار، احتمالات و دادهکاوی
- مجموعه آموزشهای یادگیری ماشین و بازشناسی الگو
- مجموعه آموزشهای شبکههای عصبی مصنوعی
- مجموعه آموزشهای هوش محاسباتی
- آموزش برنامهنویسی R و نرمافزار R Studio
- مجموعه آموزشهای برنامه نویسی متلب (MATLAB)
^^
عالی بود .بسیار سودمند و آموزنده بود در واقع معرفی و مقدمهای برای انتخاب و شروع کتابخانههای مورد نیاز است.متشکرم
سلام
ممنونم بابت توضیحاتتون. خیلی کمک کرد. از نظر فنی خیلی خوب بود فقط در بحث نگارشی مثلا یک جاهایی اگر ویرگول گذاشته بشه بهتره.
مثلا در ۱. تنسورفلو (TensorFlow) ، خط اول گره های گراف، عملیات ریاضی… باشه بهتره.. سه چهار موردی اینطوری بود. وگرنه خیلی هم خوب بود و ممنونم ازتون
سلام …
متن خیلی ایراد نگارشی داشت …
خوانایی خیلی پایینی هم داشت و بیش از حد نکات فنی استفاده کردید …
درود؛
از همراهی شما با مجله فرادرس بسیار سپاسگزارم. مطلب مجددا از جهت ایرادات نگارشی بازنگری شد و مورد خاصی مشاهده نشد. لطفا، چند نمونه از موارد مورد نظر را جهت بررسی بیشتر ارسال بفرمایید.
از توجه و دقت شما سپاسگزارم.