استخدام مكتبة PyTorch لتعلم الآلة في Python
تمت الكتابة بواسطة: عبد الحكيم
تارخ آخر تحديث: 10 سبتمبر 2024محتوى المقال
- ما هي مكتبة PyTorch؟
- إعداد البيئة وتثبيت PyTorch
- البدء مع PyTorch
- إجراء التنبؤات باستخدام النموذج
- العمل مع وحدات معالجة الرسوميات (GPU)
- الخلاصة
تُعد مكتبة PyTorch واحدة من أقوى الأدوات المستخدمة في تعلم الآلة والتعلم العميق. توفر PyTorch بيئة مرنة وسهلة الاستخدام لبناء نماذج تعلم الآلة، مما يجعلها الخيار المفضل لدى الباحثين والمطورين. في هذا المقال، سنتعرف على كيفية استخدام مكتبة PyTorch في Python من خلال أمثلة عملية.
ما هي مكتبة PyTorch؟
PyTorch هي مكتبة مفتوحة المصدر لتعلم الآلة والتعلم العميق طورتها شركة Facebook. تتميز PyTorch بسهولة استخدامها وقدرتها على إنشاء النماذج الديناميكية، مما يجعلها أداة قوية لتطوير النماذج المعقدة.
لماذا نستخدم PyTorch؟
- توفر بيئة مرنة لبناء نماذج تعلم الآلة.
- دعم قوي للحسابات على وحدات معالجة الرسوميات (GPU) مما يزيد من سرعة التدريب.
- مجتمع مستخدمين كبير ودعم فني جيد.
إعداد البيئة وتثبيت PyTorch
لبدء استخدام PyTorch، نحتاج أولاً إلى إعداد بيئة العمل وتثبيت المكتبة. يمكنك تثبيت PyTorch باستخدام pip أو conda، بناءً على بيئة Python التي تعمل بها.
تثبيت PyTorch باستخدام pip
$ pip install torch torchvision torchaudio
تضمن الأمر أعلاه تثبيت مكتبة PyTorch بالإضافة إلى مكتبات إضافية مثل torchvision
(التي تحتوي على مجموعات بيانات شائعة ورؤوس الشبكات العصبية) وtorchaudio
(للبيانات الصوتية).
البدء مع PyTorch
بمجرد تثبيت PyTorch، يمكنك البدء في إنشاء النماذج. دعونا نبدأ بمثال بسيط لإنشاء شبكة عصبية باستخدام PyTorch.
إنشاء شبكة عصبية بسيطة
سنقوم بإنشاء شبكة عصبية بسيطة تحتوي على طبقتين مخفيتين لتصنيف بيانات عشوائية.
import torch
import torch.nn as nn
import torch.optim as optim
# تعريف نموذج الشبكة العصبية
class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
# طبقات الشبكة العصبية
self.fc1 = nn.Linear(10, 50)
self.fc2 = nn.Linear(50, 20)
self.fc3 = nn.Linear(20, 2)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = torch.relu(self.fc2(x))
return self.fc3(x)
# إنشاء نموذج الشبكة العصبية
model = SimpleNN()
# تعريف دالة الفقدان والمُحسن
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
في هذا المثال، قمنا بإنشاء نموذج شبكة عصبية بسيطة تحتوي على ثلاث طبقات باستخدام torch.nn
. كما قمنا بتعريف دالة الفقدان (CrossEntropyLoss) والمُحسن (SGD).
تدريب النموذج
لتدريب النموذج، نحتاج إلى تمرير البيانات عبر النموذج وحساب الفقدان، ثم إجراء عملية التحسين. في المثال التالي، نقوم بتدريب النموذج على بيانات عشوائية:
# بيانات تدريب عشوائية
inputs = torch.randn(100, 10)
labels = torch.randint(0, 2, (100,))
for epoch in range(100):
# تمرير البيانات عبر النموذج
outputs = model(inputs)
# حساب الفقدان
loss = criterion(outputs, labels)
# إجراء عملية التحسين
optimizer.zero_grad()
loss.backward()
optimizer.step()
# طباعة الفقدان لكل فترة
if epoch % 10 == 0:
print("Epoch [{}/100], Loss: {:.4f}".format(epoch, loss.item()))
في هذا المثال، نقوم بتدريب النموذج على 100 فترة (epoch). في كل فترة، نقوم بتمرير البيانات عبر النموذج، حساب الفقدان، ثم إجراء التحسين. يتم طباعة الفقدان كل 10 فترات لمراقبة تقدم التدريب.
إجراء التنبؤات باستخدام النموذج
بعد تدريب النموذج، يمكنك استخدامه لإجراء التنبؤات على بيانات جديدة. في المثال التالي، سنقوم بإجراء التنبؤات باستخدام النموذج المدرب:
# بيانات اختبار عشوائية
test_inputs = torch.randn(10, 10)
# إجراء التنبؤات
test_outputs = model(test_inputs)
_, predicted = torch.max(test_outputs, 1)
print("Predicted labels:", predicted)
في هذا المثال، نقوم بتمرير بيانات اختبار عشوائية عبر النموذج المدرب، ثم نحصل على التنبؤات باستخدام دالة torch.max
لاختيار الفئة ذات الاحتمالية الأعلى.
العمل مع وحدات معالجة الرسوميات (GPU)
إحدى المزايا الرئيسية لـ PyTorch هي الدعم الكامل لوحدات معالجة الرسوميات (GPU). يمكنك نقل النموذج والبيانات إلى GPU بسهولة لزيادة سرعة التدريب.
نقل النموذج والبيانات إلى GPU
في المثال التالي، سنوضح كيفية نقل النموذج والبيانات إلى GPU:
# التحقق من توفر GPU
device = 'cuda' if torch.cuda.is_available() else 'cpu'
# نقل النموذج إلى GPU
model = SimpleNN().to(device)
# نقل البيانات إلى GPU
inputs = inputs.to(device)
labels = labels.to(device)
هنا، نقوم بالتحقق من توفر GPU ونقل النموذج والبيانات إلى الجهاز المناسب. إذا كانت وحدة معالجة الرسوميات متاحة، سيتم استخدام GPU، وإلا سيتم استخدام المعالج المركزي (CPU).
الخلاصة
توفر مكتبة PyTorch بيئة مرنة وقوية لتعلم الآلة والتعلم العميق. من خلال استخدام PyTorch، يمكنك بناء وتدريب النماذج بسهولة، وإجراء التنبؤات، والعمل مع وحدات معالجة الرسوميات لزيادة سرعة التدريب. إذا كنت تبحث عن أداة قوية لتطوير نماذج تعلم الآلة، فإن PyTorch هي الخيار الأمثل.
طور مهاراتك: مقالات يجب قراءتها في البرمجة
- كيفية قراءة ومعالجة الصور باستخدام مكتبة OpenCV في Python
- كيفية إجراء الاختبارات الوحدوية في Python باستخدام unittest
- بناء تطبيق ويب بسيط باستخدام Django في Python
- كيفية استخدام مكتبة Seaborn لإنشاء مخططات متقدمة في Python
- كيفية إرسال رسائل بريد إلكتروني باستخدام Python
- كيفية التعامل مع النصوص الكبيرة باستخدام مكتبة StringIO في Python
- كيفية استخدام مكتبة Socket لبرمجة الشبكات في Python
- كيفية تحليل البيانات البيانية باستخدام مكتبة Plotly في Python
- إنشاء تطبيق ويب ديناميكي باستخدام FastAPI في Python
- كيفية إدارة وحفظ الملفات باستخدام مكتبة os في Python