در سالهای اخیر، یادگیری عمیق یکی از شاخههای مهم هوش مصنوعی است که بسیاری از محققان و متخصصان حوزهی تکنولوژی در آن فعالیت میکنند. PyTorch یکی از کتابخانههای پرکاربرد برای یادگیری عمیق در پایتون است که توسط Facebook توسعه داده شده است. در این پست وبلاگ، با مفاهیم ابتدایی PyTorch و نحوه استفاده از آن در یادگیری عمیق آشنا خواهیم شد.
PyTorch یک کتابخانه یادگیری عمیق است که بر اساس توزیع پایتون ساخته شده است. این کتابخانه به شما اجازه میدهد تا با استفاده از توابع موجود در آن، شبکههای عصبی خود را ایجاد و آموزش دهید. برای شروع، میتوانید با نصب PyTorch شروع کنید. بهتر است از نسخهی جدیدتر PyTorch استفاده کنید تا از قابلیتهای جدید آن بهرهمند شوید.
!pip install torch torchvision
پس از نصب، میتوانید با استفاده از PyTorch، یک شبکهی عصبی ساده را بسازید. در این مثال، یک شبکهی ساده با یک لایهی مخفی و یک خروجی را برای دستهبندی اعداد دستنویس ساختهایم.
import torch import torch.nn as nn class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(784, 128) self.fc2 = nn.Linear(128, 10) def forward(self, x): x = torch.relu(self.fc1(x)) x = self.fc2(x) return x
در کد بالا کلاسی به نام Net تعریف کرده ایم که از کلاس nn.Module ارث می برد. این شبکه عصبی از یک لایه پنهان و یک لایه خروجی با تابع فعال سازی relu تشکیل شده است.
برای آموزش شبکه می توانیم از یک تابع ضرر و یک بهینه ساز استفاده کنیم. در این مثال، از تابع تلفات متقاطع آنتروپی و بهینه ساز گرادیان تصادفی (SGD) استفاده خواهیم کرد.
net = Net() criterion = nn.CrossEntropyLoss() optimizer = torch.optim.SGD(net.parameters(), lr=0.01, momentum=0.5)
برای آموزش شبکه می توانیم از حلقه زیر استفاده کنیم:
for epoch in range(10): running_loss = 0.0 for i, data in enumerate(trainloader, 0): inputs, labels = data optimizer.zero_grad() outputs = net(inputs.view(-1, 784)) loss = criterion(outputs, labels) loss.backward() optimizer.step() running_loss += loss.item() if i % 1000 == 999: print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 1000)) running_loss = 0.0
در حلقه بالا، ما در حال تکرار از طریق داده ها و بهینه سازی وزن شبکه عصبی با استفاده از بهینه ساز هستیم. تابع ضرر برای محاسبه خطا بین خروجی های پیش بینی شده و برچسب های واقعی استفاده می شود.
پس از آموزش شبکه عصبی، می توانیم از آن برای پیش بینی داده های جدید استفاده کنیم:
correct = 0 total = 0 with torch.no_grad(): for data in testloader: images, labels = data outputs = net(images.view(-1, 784)) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() print('Accuracy of the network on the 10000 test images: %d %%' % ( 100 * correct / total))
در کد بالا، ما از شبکه عصبی آموزش دیده برای پیش بینی داده های تست و محاسبه دقت شبکه استفاده می کنیم.
در پایان، PyTorch یک کتابخانه عالی برای یادگیری عمیق در پایتون است و راه آسان و کارآمدی را برای ساخت و آموزش شبکه های عصبی ارائه می دهد. PyTorch طیف گسترده ای از ویژگی ها را ارائه می دهد، از جمله autograd، نمودارهای محاسباتی پویا و پشتیبانی از شتاب GPU، که آن را به انتخابی محبوب برای بسیاری از برنامه های یادگیری عمیق تبدیل می کند. با مثال ساده شبکه عصبی ارائه شده در بالا، باید بتوانید با PyTorch شروع کنید و شروع به ساخت مدل های یادگیری عمیق خود کنید. به خاطر داشته باشید که این فقط نوک کوه یخ است و PyTorch بسیاری از ویژگیهای پیشرفتهتر را ارائه میکند که میتوان برای ساخت مدلهای پیچیدهتر و دقیقتر آنها را بررسی کرد.
به طور خلاصه، PyTorch یک کتابخانه یادگیری عمیق قدرتمند و منعطف است که ویژگی های مختلفی را ارائه می دهد و استفاده از آن بسیار آسان است. با دنبال کردن مثالهای ارائه شده در این پست، باید بتوانید شبکههای عصبی خود را بسازید و آنها را با PyTorch آموزش دهید. به یاد داشته باشید که به کاوش و آزمایش PyTorch ادامه دهید تا تمام ویژگی ها و قابلیت های آن را کشف کنید.