استخدام مكتبة PyTorch لتعلم الآلة في Python

تمت الكتابة بواسطة: عبد الحكيم

تارخ آخر تحديث: 10 سبتمبر 2024

محتوى المقال

استخدام مكتبة PyTorch لتعلم الآلة في Python

تُعد مكتبة 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 هي الخيار الأمثل.

طور مهاراتك: مقالات يجب قراءتها في البرمجة