آموزش پای تورچ (PyTorch)

دسته بندی: آموزش پایتون (Python)

پای تورچ

آنچه در این صفحه می خوانید:

Pytorch چیست؟

PyTorch یک کتابخانه یادگیری ماشین اوپن سورس است که بر اساس کتابخانه Torch ساخته شده است و برای برنامه هایی مانند بینایی ماشین و پردازش زبان طبیعی مورد استفاده قرار می گیرد. در درجه اول توسط گروه تحقیق هوش مصنوعی فیس بوک تهیه شده است. این نرم افزار رایگان و اوپن سورس است که تحت مجوز اصلاح شده BSD منتشر شده است. اگرچه ارتباط با پایتون صحیح تر و تمرکز اصلی توسعه آن است، اما PyTorch همچنین دارای ویژگی فرانت اند ++C است. علاوه بر این، نرم افزار زبان برنامه نویسی احتمالی Pyro Uber از PyTorch به عنوان بک اند استفاده می کند.

PyTorch یک بسته محاسبات علمی مستقر در پایتون است که از قدرت واحدهای پردازش گرافیک استفاده می کند. همچنین یکی از سکوهای تحقیق یادگیری عمیق ترجیح داده شده برای ارائه حداکثر انعطاف پذیری و سرعت است. این برای ارائه دو مورد از ویژگی های سطح بالا شناخته شده است. محاسبات تنسور با پشتیبانی از پردازش GPU قوی و ایجاد شبکه های عصبی عمیق در سیستم های اتوگراد مبتنی بر نوار انجام می شود. بسیاری از کتابخانه های موجود پایتون وجود دارند که می توانند نحوه یادگیری عمیق و هوش مصنوعی را تغییر دهند و این یکی از این کتابخانه ها است. یکی از دلایل مهم موفقیت PyTorch این است که کاملاً Pythonic است و می توان مدل های شبکه عصبی را ساخت. این بازیکن در مقایسه با سایر رقبای خود هنوز بازیکن جوانی است، اما سرعت بسیار خوبی کسب می کند.

تاریخچه PyTorch

از زمان انتشار آن در ژانویه سال 2016، بسیاری از محققان به طور فزاینده ای پی پیچ را تصویب کردند. به دلیل سهولت در ساخت شبکه های عصبی بسیار پیچیده، به سرعت به کتابخانه تبدیل شده است. این یک رقابت سخت به TensorFlow می دهد، مخصوصاً هنگامی که برای کارهای تحقیقاتی استفاده می شود. با این حال، به دلیل برچسب های هنوز "جدید" و "در دست ساخت"، توسط توسعه دهنده ها پذیرفته شده است. سازندگان PyTorch پیش بینی کرده بودند که این کتابخانه بسیار ضروری است و به آنها امکان می دهد همه محاسبات عددی را به سرعت اجرا کنند. این یک روش ایده آل است که کاملاً با سبک برنامه نویسی پایتون مطابقت دارد. این اجازه را به دانشمندان یادگیری عمیق، توسعه دهندگان یادگیری ماشین و اشکال زدایی شبکه های عصبی داده است که بخشی از کد را در زمان واقعی اجرا و آزمایش کنند. بنابراین آنها لازم نیست که منتظر بمانند تا کل کد اجرا شود تا بررسی کند که آیا این کار می کند یا نه.

ویژگی های Pytorch

PyTorch دو ویژگی سطح بالا را ارائه می دهد:

  • محاسبات Tensor (مانند NumPy) با شتاب زیاد از طریق واحدهای پردازش گرافیک (GPU)
  • شبکه های عصبی عمیق بر روی یک سیستم خودکار مبتنی بر نوار ساخته شده است.

از دیگر ویژگی ها می توان به موارد زیر اشاره کرد:

  • TorchScript: برای تسریع در مسیر تولید، یک انتقال یکپارچه بین حالت مشتاق و حالت گراف را فراهم می کند. PyTorch با TorchScript، سهولت استفاده و انعطاف پذیری را در حالت مشتاق فراهم می کند، در حالی که یکپارچه سازی برای سرعت، بهینه سازی و عملکرد در محیط های سی پلاس پلاس به حالت گراف انتقال می یابد.
  • آموزش توزیع شده:آموزش توزیع مقیاس پذیر و بهینه سازی عملکرد در تحقیق و تولید توسط بک اند torch.distributed فعال می شود. با بهره‌گیری از پشتیبانی نیتیو برای اجرای ناهمزمان از فعالیتهای جمعی و ارتباط peer-to-peer که از پایتون و ++C قابل دستیابی است، عملکرد را در هر دو تحقیق و تولید بهینه کنید.
  • Python-First: ادغام یادگیری عمیق در پایتون باعث می شود تا از کتابخانه ها و بسته های محبوب برای نوشتن آسان لایه های شبکه عصبی در پایتون استفاده شود. PyTorch یکاتصال یکپارچه پایتون به فریمورک++C نیست بلکه ساخته شده است که به شدت در پایتون ادغام شود، بنابراین می تواند با کتابخانه ها و بسته های محبوب مانند Cython و Numba استفاده شود.
  • ابزارها و كتابخانه ها: اکوسیستم غنی از ابزارها و کتابخانه ها PyTorch را گسترش می دهد و از توسعه در بینایی ماشین، NLP و موارد دیگر پشتیبانی می کند. جامعه ای فعال از محققان و توسعه دهندگان برای گسترش PyTorch و حمایت از توسعه در مناطقی از بینایی ماشین تا یادگیری تقویت، اکوسیستم غنی از ابزارها و کتابخانه ها را ایجاد کرده اند.
  • پشتیبانی نیتیو ONNX: برای دسترسی مستقیم به سیستم عامل های سازگار با ONNX، ران تایم، تجسم سازها و موارد دیگر، مدل های استاندارد را با فرمت ONNX صادر کنید.
  • همکاری در ابر: PyTorch به خوبی در سیستم عامل های ابری بزرگ پشتیبانی می کند، توسعه ای بدون اصطکاک و مقیاس پذیری آسان از طریق تصاویر از پیش ساخته، آموزش در مقیاس بزرگ در GPU، امکان اجرای مدل ها در یک محیط مقیاس تولید و موارد دیگر.

چه کارهایی با Pytorch میتوان انجام داد؟

هرکسی که در زمینه یادگیری عمیق و هوش مصنوعی فعالیت می کند، احتمالاً قبلاً با TensorFlow، محبوب ترین کتابخانه منبع باز Google کار کرده است. با این حال، آخرین چارچوب یادگیری عمیق PyTorch مشکلات عمده ای را از نظر کار تحقیقاتی را حل می کند. احتمالاً PyTorch بزرگترین رقیب TensorFlow تا به امروز است و در حال حاضر یک کتابخانه یادگیری عمیق و هوش مصنوعی بسیار مطلوب در جامعه تحقیقاتی است. شما همیشه می توانید از بسته های پایتون مورد علاقه خود مانند NumPy ،SciPy و Cython استفاده کنید تا در صورت لزوم عملکردها و خدمات PyTorch را گسترش دهید. PyTorch یک کتابخانه پویا است و بسیار انعطاف پذیر است و می توانید طبق نیازها و تغییرات خود از آن استفاده کنید، که هم اکنون توسط بسیاری از محققان، دانشجویان و توسعه دهندگان هوش مصنوعی پذیرفته شده است.

مقایسه Pytorch با تنسور فلو

در حالی که هر دو تنسور فلو و PyTorch اوپن سورس هستند، توسط دو ویزارد مختلف ایجاد شده اند. Tensorflow مبتنی بر Theano است و توسط گوگل توسعه یافته است، در حالی که PyTorch مبتنی بر Torch است و توسط Facebook ساخته شده است. مهمترین تفاوت این دو در نحوه تعریف این فریمورک ها نمودارهای محاسباتی است. در حالی که TensorFlow یک نمودار استاتیک ایجاد می کند، PyTorch به یک نمودار پویا اعتقاد دارد. خوب این به چه معنا است؟ در Tensorflow ابتدا باید کل نمودار محاسباتی مدل را تعریف کرده و سپس مدل ML خود را اجرا کنید. اما در PyTorch می توانید نمودار خود را بصورت همزمان تعریف یا دستکاری کنید. این امر به ویژه در هنگام استفاده از ورودی های با طول متغیر در RNN مفید است.

Tensorflow دارای منحنی یادگیری شیب دار تر از PyTorch است. PyTorch pythonic تر است و مدل های ML ساختاری احساس شهودی تر می کنند. از سوی دیگر، برای استفاده از Tensorflow، شما باید کمی بیشتر در مورد کار (نشست ها، متغیرها و غیره) کار کنید و بنابراین یادگیری Tensorflow نسبت به PyTorch کمی دشوارتر می شود.

Tensorflow جامعه ای بسیار بزرگتر از PyTorch دارد. این بدان معنی است که پیدا کردن منابعی برای یادگیری Tensorflow و همچنین یافتن راه حل برای مشکلات خود آسان تر می شود. همچنین بسیاری از آموزش ها و MOOC به جای استفاده از PyTorch ،Tensorflow را پوشش می دهند. دلیل این امر این است که PyTorch یک فریمورک نسبتاً جدید در مقایسه با Tensorflow است. بنابراین، از نظر منابع، مطالب بسیار بیشتری درباره Tensorflow نسبت به PyTorch خواهید یافت.

این مقایسه بدون ذکر TensorBoard ناقص خواهد بود. TensorBoard ابزاری درخشان است که تجسم مدل های ML شما را مستقیماً در مرورگر شما امکان پذیر می کند. PyTorch چنین ابزاری ندارد، اگرچه همیشه می توانید از ابزارهایی مانند Matplotlib استفاده کنید. اگرچه، ادغام هایی در خارج وجود دارد که به شما امکان می دهد از Tensorboard با PyTorch استفاده کنید. اما بصورت نیتیو پشتیبانی نمی شود.

سرانجام، Tensorflow برای مدل های تولید و مقیاس پذیری بسیار بهتر است. این ساخته شده است تا آماده تولید باشد. در حالی که، PyTorch برای یادگیری آسان تر و کار با آن سبک تر است و از این رو برای پروژه های شور و ساخت نمونه های سریع سریع نسبتاً بهتر است.

واقعیت این است که برخی افراد بهتر است از PyTorch استفاده کنند در حالی که برخی دیگر استفاده از Tensorflow را بهتر می دانند. هر دو فریمورک های بزرگی هستند که جامعه بزرگی در پشت سر خود دارند و پشتیبانی زیادی دارند. هر دو کار را انجام می دهند.

مثال Pytorch

در اینجا ما از تنسورهای PyTorch برای قرار دادن شبکه دو لایه در داده های تصادفی استفاده می کنیم. باید به صورت دستی پاس های رو به جلو و عقب را از طریق شبکه پیاده سازی کنیم:

# -*- coding: utf-8 -*-

import torch

dtype = torch.float device = torch.device("cpu") # device = torch.device("cuda:0") # Uncomment this to run on GPU

# N is batch size; D_in is input dimension; # H is hidden dimension; D_out is output dimension. N, D_in, H, D_out = 64, 1000, 100, 10

# Create random input and output data x = torch.randn(N, D_in, device=device, dtype=dtype) y = torch.randn(N, D_out, device=device, dtype=dtype)

# Randomly initialize weights w1 = torch.randn(D_in, H, device=device, dtype=dtype) w2 = torch.randn(H, D_out, device=device, dtype=dtype)

learning_rate = 1e-6 for t in range(500): # Forward pass: compute predicted y h = x.mm(w1) h_relu = h.clamp(min=0) y_pred = h_relu.mm(w2)

# Compute and print loss loss = (y_pred - y).pow(2).sum().item() if t % 100 == 99: print(t, loss)

# Backprop to compute gradients of w1 and w2 with respect to loss grad_y_pred = 2.0 * (y_pred - y) grad_w2 = h_relu.t().mm(grad_y_pred) grad_h_relu = grad_y_pred.mm(w2.t()) grad_h = grad_h_relu.clone() grad_h[h < 0] = 0 grad_w1 = x.t().mm(grad_h)

# Update weights using gradient descent w1 -= learning_rate * grad_w1 w2 -= learning_rate * grad_w2

آیا این نوشته را دوست داشتید؟
pluralsight-using-pytorch-in-the-cloud-pytorch-playbook

آموزش استفاده از PyTorch در Cloud PyTorch Playbook


در این دوره، با استفاده از PyTorch در Cloud PyTorch Playbook، توانایی استفاده از PyTorch در هر یک از سه ارائه دهنده بزرگ کلود را خواهید داشت: Amazon W...

1400/03/08 242 بازدید
packt-hands-on-computer-vision-with-pytorch-1-x

آموزش عملی بینایی کامپیوتر با PyTorch 1.x


این دوره در زمینه ی پردازش تصویر، شما را با مفاهیم اساسی یادگیری عمیق و بهینه سازی آشنا می کند. سپس، شما خواهید آموخت که از API های PyTorch که می توان...

1400/02/22 594 بازدید
pluralsight-style-transfer-with-pytorch

آموزش انتقال استایل با PyTorch


در این دوره، شما توانایی استفاده از شبکه های عصبی پیچشی آموزش دیده (CNN) را دارید که برای انتقال سبک در PyTorch به اصطلاح out-of-the-box می شوند. در ا...

1399/09/21 1190 بازدید
pluralsight-predictive-analytics-with-pytorch

تحلیل های پیش بینانه با PyTorch


PyTorch به دلیل انعطاف پذیری، سهولت استفاده، و پشتیبانی داخلی از سخت افزارهای بهینه از جمله GPU ها به سرعت به عنوان یک گزینه محبوب در ساخت مدل های یاد...

1399/09/16 1496 بازدید زیرنویس دارد
pluralsight-expediting-deep-learning-with-transfer-learning-pytorch-playbook

تسریع یادگیری عمیق با یادگیری انتقال: PyTorch Playbook


شما در این دوره، توانایی شناسایی رویکرد صحیح یادگیری انتقال و پیاده سازی آن با استفاده از PyTorch را به دست می آورید. ابتدا یاد خواهید گرفت که چگونه م...

1399/08/26 1442 بازدید زیرنویس دارد
pluralsight-deploying-pytorch-models-in-production-pytorch-playbook

آموزش استقرار مدل های PyTorch در محصول: PyTorch Playbook


شما در این دوره، توانایی استفاده از قابلیت های پیشرفته برای سری سازی و غیر سری سازی مدل های PyTorch، آموزش و سپس پیاده سازی آن ها برای پیش بینی را به ...

1399/08/26 915 بازدید زیرنویس دارد
pluralsight-natural-language-processing-with-pytorch

آموزش پردازش زبان طبیعی با PyTorch


از ربات های چت گرفته تا مقالات تولید شده توسط ماشین، برخی از داغترین کاربردهای ML و AI این روزها برای داده ها به صورت متنی است. در این دوره، پردازش زب...

1399/08/14 1645 بازدید
pluralsight-image-classification-with-pytorch

آموزش طبقه بندی تصویر با PyTorch


در این دوره، شما توانایی طراحی و پیاده سازی طبقه بندی تصویر با استفاده از PyTorch را کسب خواهید کرد. در ادامه، قابلیت نمایش دهی تصاویر به صورت تنسورها...

1399/08/07 2154 بازدید
pluralsight-building-your-first-pytorch-solution

ساخت اولین راه حل PyTorch شما


این دوره جنبه های مهم عملی نصب PyTorch را از ابتدا روی انواع مختلف سیستم عامل و استفاده از مدل های طبقه بندی و رگرسیون را پوشش می دهد. در این دوره، سا...

1399/07/22 1287 بازدید زیرنویس دارد
pluralsight-getting-started-with-nlp-deep-learning-using-pytorch-and-fastai

شروع کار با یادگیری عمیق NLP با استفاده از PyTorch و fastai


در این دوره با کتابخانه fastai و یادگیری انتقالی، نحوه تعلیم سریع یک مدل برای طبقه بندی متن، نحوه انجام پردازش زبان طبیعی (NLP) با شبکه‌های عصبی عمیق ...

1399/06/10 2423 بازدید
linkedin-transfer-learning-for-images-using-pytorch-essential-training

آموزش اصولی یادگیری انتقال برای تصاویر با PyTorch


PyTorch پس از شروع به کار در سال 2017، به سرعت ابزار انتخابی بسیاری از محققان یادگیری عمیق شد. در این دوره، Jonathan Fernandes به شما نشان می دهد که چ...

1399/02/03 3168 بازدید زیرنویس دارد
packtpub-dynamic-neural-network-programming-with-pytorch

برنامه نویسی شبکه عصبی پویا با PyTorch


در این دوره آموزش استفاده از PyTorch برای ساخت شبکه عصبی پویا را خواهید دید. اگر مدت زمان زیادی صرف جمع آوری داده و همچنین تعلیم مدل‌هایتان کرده‌اید، ...

1398/09/25 3563 بازدید
pluralsight-foundations-of-pytorch

اصول PyTorch


در این دوره با اصول PyTorch، استفاده از آن برای پشتیبانی گراف‌های محاسباتی دینامیک و مقایسه مقابل آن با سایر فریم ورک‌های محبوب مانند TensorFlow، نورو...

1398/08/24 5517 بازدید
pluralsight-building-deep-learning-models-using-pytorch

آموزش ایجاد مدل های یادگیری عمیق با PyTorch


فریمورک PyTorch متن باز  و فریمورک یادگیری عمیق می باشد که یک جایگزین محبوب برای TensorFlow و Apache MXNet است. PyTorch APIs یک رویکرد بومی پایتون را ...

1397/09/25 4207 بازدید
packtpub-deep-learning-projects-with-pytorch-video

آموزش پروژه های یادگیری عمیق با PyTorch 


PyTorch یک فریمورک یادگیری عمیق است که محرک محققان و دانشمندان داده است. PyTorch از Graphic Processing Units پشتیبانی و حداکثر انعطاف پذیری و سرعت را ...

1397/06/08 2580 بازدید
packtpub-deep-learning-and-neural-networks-in-pytorch-for-beginners-video

آموزش یادگیری عمیق و شبکه های عصبی در PyTorch برای مبتدیان


هوش مصنوعی (AI) داغترین موضوعی است که در حال حاضر وجود دارد. در AI شبکه های عصبی توجه فراوانی را به خود جلب کرده اند و در همه جا مورد استفاده قرار می ...

1397/06/03 3398 بازدید
packtpub-deep-learning-with-pytorch-video

آموزش یادگیری عمیق با PyTorch


این دوره ویدیویی یکی از پیشرفته ترین کتابخانه های یادگیری عمیق، PyTorch را به شما آموزش می دهد. PyTorch نوشته شده در پایتون، توجه همه متخصصان علوم اطل...

1397/04/10 4840 بازدید