آموزش Pytorch (قسمت اول)
کتابخانه Pytorch برای یادگیری عمیق
جهان در حال پیشرفت است و فناوری نیز در خدمت آن است. همه باید با تغییرات سریع تکنولوژی همراه شوند. یکی از حوزه هایی که شاهد سریع ترین و بزرگترین تکامل بوده ، هوش مصنوعی است. ما در هوش مصنوعی، ماشین های خود را برای یادگیری آموزش می دهیم تا به نتایج بهتری دست یابند. PyTorch به عنوان یک جایگزین برای ساخت بخشی از این مدل ها بوجود آمده است.
با در نظر گرفتن تمام جوانب مثبت شناخت و یادگیری PyTorch، ما این مقاله آموزشی را درباره یادگیری عمیق با PyTorch آماده کرده ایم که سرفصل های آن را می توانید در ادامه مشاهده کنید :
فهرست مطالب
- PyTorch چیست؟
- یادگیری عمیق با PyTorch ، یک حرکت برق آسا
- چرا باید PyTorch را یاد بگیرم؟
- مروری بر کتابخانه PyTorch
1- بارگذاری و مدیریت داده ها
۲- ساخت شبکه عصبی
۳- استنباط و سازگاری مدل
- معرفی تنسورها
- اولین تنسور خود را بسازید
- دسترسی به یک عنصر در تنسور
- تشیخص نوع داده از عناصر
- تنسور به / از آرایه NumPy
- عملیات حسابی روی تنسورها
- تنسور CPU و GPU
PyTorch چیست؟
PyTorch یک کتابخانه مبتنی بر پایتون است که ساخت مدل های یادگیری عمیق و استفاده از آن ها در برنامه های مختلف را تسهیل می کند. اما در واقع ، چیزی فراتر از یک کتابخانه یادگیری عمیق است. PyTorch یک بسته محاسباتی علمی است (همانطور که در اسناد رسمی PyTorch آمده است).
این یک بسته محاسباتی علمی مبتنی بر پایتون است که با دو هدف در اختیار مخاطبان قرار گرفته است :
- جایگزینی برای NumPy به منظور استفاده از توان پردازنده های گرافیکی ( GPU )
- یک پلتفرم تحقیقات یادگیری عمیق که حداکثر انعطاف پذیری و سرعت را ارائه می دهد
یادگیری عمیق با PyTorch، یک حرکت برق آسا
PyTorch از تنسور ( Tensor ) به عنوان ساختار داده اصلی خود ، مشابه آرایه Numpy استفاده می کند. ممکن است در مورد این انتخاب خاص از ساختار داده ، تعجب کنید. پاسخ آن در این واقعیت نهفته است که با نرم افزار و سخت افزار مناسب ، تنسورها به عملیات مختلف ریاضی سرعت می بخشند. این عملیات هنگامی که با اعداد بزرگ برای یادگیری عمیق انجام شود ، تفاوت زیادی در سرعت ایجاد می کند.
PyTorch ، مشابه Python ، روی سهولت استفاده متمرکز است و این امکان را برای کاربران با دانش برنامه ریزی بسیار سطحی و مبتدی هم فراهم می کند تا از یادگیری عمیق در پروژه های خود استفاده کنند. همچنین اگر از قبل، هیچ کتابخانه یادگیری عمیقی را یاد نگرفته اید ، می توانید از پایتورچ به عنوان ” اولین کتابخانه یادگیری عمیق ” استفاده کنید.
چرا باید PyTorch را یاد بگیرم؟
در بخش قبلی ، ذکر کردیم که PyTorch بهترین گزینه برای اولین کتابخانه یادگیری عمیق است که باید یاد بگیرید. در این بخش ، توضیح خواهیم داد که چرا اینچنین است. هیچ کم و کاستی در کتابخانه های یادگیری عمیق وجود ندارد : Keras ، Tensorflow ، Caffe و Theano (منسوخ شده) و بسیاری موارد دیگر. اما چه چیزی PyTorch را متفاوت می کند؟
یک کتابخانه یادگیری عمیق ایده آل باید به راحتی قابل یادگیری و قابل استفاده باشد ، به اندازه کافی انعطاف پذیر باشد تا در برنامه های کاربردی مختلف مورد استفاده قرار گیرد ، کارآمد باشد تا مجموعه داده های عظیم زندگی واقعی را مدیریت کند و برای اینکه بتوانیم نتایج صحیح را حتی در صورت عدم قطعیت در داده های ورودی ارائه دهیم ، از دقت بالایی برخوردار باشد.
PyTorch در تمام این معیارهای ذکر شده در بالا عملکرد بسیار خوبی دارد. سبک کدنویسی ” pythonic ” ، یادگیری و استفاده از آن را تسهیل می کند. سرعت GPU ، پشتیبانی از محاسبه توزیع شده و محاسبه خودکار گرادیان ، به انجام خودکار بازگشت به عقب کمک می کند.
البته ، به خاطر پایتون ، با خطر کند بودن زمان اجرا مواجه هستیم اما API با عملکرد بالا C ++ (libtorch) آن را از بین می برد. این امر باعث می شود انتقال از تحقیق و توسعه به تولید ، بسیار روان باشد که این دلیل دیگری است برای استفاده از PyTorch !
بیایید نتایج جالب توجهی را که می توان با استفاده از یک برنامه PyTorch بدست آورد بررسی کنیم.
مروری بر کتابخانه PyTorch
حال که با PyTorch و ویژگی های منحصر به فرد آن آشنا شدیم ، بیایید نگاهی به ساختار اصلی یک پروژه PyTorch بیندازیم. شکل زیر یک گردش کار معمولی همراه با ماژول های مهم مرتبط با هر مرحله را توصیف می کند.
گردش کار اصلی PyTorch
ماژول های مهم PyTorch که ما در اینجا به طور خلاصه در مورد آن ها بحث خواهیم کرد عبارتند از: torch.nn ، torch.optim ، torch.utils و torch.autograd
۱- بارگذاری و مدیریت داده ها
اولین قدم در هر پروژه یادگیری عمیق، بارگذاری و مدیریت داده هاست. PyTorch برای این کار، ابزارهایی را از طریق torch.utils.data در اختیار کاربر قرار می دهد.
دو کلاس مهم در این ماژول Dataset و DataLoader هستند.
- Dataset از روی نوع داده Tensor ساخته شده است و در درجه اول برای مجموعه داده های سفارشی استفاده می شود.
- DataLoader زمانی مورد استفاده قرار میگیرد که یک مجموعه داده بزرگ داشته باشید و بخواهید داده ها را از یک مجموعه داده در پس زمینه بارگذاری کنید تا آماده و منتظر حلقه آموزش باشد.
اگر به چندین ماشین یا GPU دسترسی داشته باشیم، می توانیم از torch.nn.DataParallel و torch.distributed استفاده کنیم.
۲- ساخت شبکه عصبی
از ماژول torch.nn برای ایجاد شبکه های عصبی استفاده می شود، که همه لایه های متداول شبکه عصبی ، مانند لایه های کاملاً متصل ، لایه های کانولوشن ، توابع فعالسازی و هزینه و غیره را فراهم می کند.
وقتی معماری شبکه ایجاد شد و داده ها برای تغذیه شبکه آماده شدند ، ما به تکنیک هایی برای به روزرسانی وزن ها و بایاس ها نیاز داریم تا شبکه شروع به یادگیری کند. این برنامه ها در ماژول torch.optim ارائه می شوند. به همین ترتیب ، برای مشتق گیری خودکار که در هنگام بازگشت به عقب لازم است ، ما از ماژول torch.autograd استفاده می کنیم.
۳- استنباط و سازگاری مدل
بعد از اینکه مدل آموزش داده شد ، می توان از آن برای پیش بینی خروجی موارد آزمایشی یا حتی مجموعه داده های جدید استفاده کرد. این فرآیند استنباط مدل نامیده می شود.
PyTorch همچنین TorchScript را ارائه می دهد که می تواند برای اجرای مدل ها ، مستقل از زمان اجرای پایتون مورد استفاده قرار گیرد. این را می توان به عنوان یک ماشین مجازی تصور کرد که دارای دستورالعمل های عمدتاً مختص تنسورها است.
همچنین می توانید مدل آموزش دیده با استفاده از PyTorch را به فرمت هایی مانند ONNX تبدیل کنید ، که به شما امکان می دهد از این مدل ها در سایر چارچوب های یادگیری عمیق مانند MXNet ، CNTK ، Caffe2 نیز استفاده کنید. همچنین می توانید مدل های onnx را به Tensorflow تبدیل کنید.
معرفی تنسورها
تاکنون در این آموزش ، در مورد اینکه چرا شما باید PyTorch را یاد بگیرید بحث کردیم و اکنون زمان شروع کار است. ما این کار را با تنسور ها (Tensors) آغاز خواهیم کرد ، یعنی ساختار اصلی داده مورد استفاده در PyTorch .
در واقع، تنسور یک نام فانتزی است که به ماتریس ها اختصاص داده می شود. اگر با آرایه های NumPy آشنا باشید ، درک و استفاده از تنسور های PyTorch بسیار آسان خواهد بود. یک مقدار اسکالر با یک تنسور صفر بُعدی نشان داده می شود. به طور مشابه ، سطر یا ستون یک ماتریس با استفاده از یک تنسور یک بُعدی نشان داده می شود و به همین ترتیب الی آخر. در زیر چند نمونه از تنسور با ابعاد مختلف برای تجسم و درک آن ها نشان داده شده است.
ابعاد تنسورها در PyTorch
قبل از اینکه با معرفی تنسورها شروع کنیم ، بیایید PyTorch 1.1.0 را با اجرای دستور زیر نصب کنیم.
تمام شد ، شما هم اکنون PyهاTorch را برای استفاده آماده کرده اید! حالا بیایید شروع کنیم. ما به شما پیشنهاد می کنیم از Google Colab استفاده کنید. نوع زمان اجرا GPU را از فهرست انتخاب کنید.
در قسمت بعد با ما همراه باشید.
4 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.