Home
Login

PyTorch Geometric (PyG) هي مكتبة شبكات عصبية بيانية مبنية على PyTorch، تهدف إلى تبسيط معالجة البيانات ذات البنية البيانية وتطوير الشبكات العصبية البيانية.

MITPython 22.5kpyg-team Last Updated: 2025-06-13

PyTorch Geometric (PyG)

نظرة عامة على المشروع

PyTorch Geometric (PyG) هي مكتبة مبنية على PyTorch، متخصصة في معالجة بيانات الإدخال ذات الهياكل غير المنتظمة، مثل الرسوم البيانية (graphs) والسحب النقطية (point clouds) والتشعبات (manifolds). توفر مجموعة من الأساليب لبناء شبكات عصبية بيانية (GNNs)، بما في ذلك مجموعة متنوعة من عوامل الالتفاف البياني، وطبقات التجميع، وأدوات معالجة البيانات، وأطر التعلم. تهدف PyG إلى تبسيط تطوير وتجربة GNNs، وتوفير تطبيقات مُسرَّعة بوحدة معالجة الرسومات (GPU) عالية الكفاءة.

الخلفية

تم تصميم أطر التعلم العميق التقليدية بشكل أساسي للبيانات الشبكية المنتظمة (مثل الصور ومقاطع الفيديو). ومع ذلك، يوجد في العالم الحقيقي كمية كبيرة من البيانات ذات الهياكل غير المنتظمة، مثل الشبكات الاجتماعية والهياكل الجزيئية ومخططات المعرفة وما إلى ذلك. تتطلب معالجة هذه البيانات أدوات وخوارزميات متخصصة. يملأ ظهور PyG هذه الفجوة، حيث يوفر نظامًا أساسيًا موحدًا لبناء وتدريب أنواع مختلفة من نماذج GNN.

الميزات الأساسية

  • سهولة الاستخدام: توفر PyG واجهة برمجة تطبيقات (API) موجزة، مما يسهل على المستخدمين تحديد وتدريب نماذج GNN. تتكامل بسلاسة مع PyTorch، ويمكن للمستخدمين الاستفادة من جميع وظائف PyTorch.

  • الكفاءة: تنفذ PyG إصدارات مُسرَّعة بوحدة معالجة الرسومات (GPU) من عوامل الالتفاف البياني المختلفة، والتي يمكنها معالجة بيانات الرسوم البيانية واسعة النطاق بكفاءة. كما أنها تدعم عمليات المصفوفات المتفرقة، مما يزيد من الكفاءة.

  • المرونة: توفر PyG مجموعة غنية من أدوات معالجة بيانات الرسوم البيانية، بما في ذلك تحميل البيانات وتحويل البيانات وتقسيم البيانات وما إلى ذلك. يمكن للمستخدمين تخصيص عمليات معالجة البيانات وفقًا لاحتياجاتهم.

  • القابلية للتوسع: يتميز تصميم بنية PyG بقابلية توسع جيدة، ويمكن للمستخدمين بسهولة إضافة عوامل التفاف بياني جديدة وطبقات تجميع وطرق معالجة البيانات.

  • طبقات شبكة عصبية بيانية غنية: توفر عددًا كبيرًا من طبقات الشبكة العصبية البيانية المعرفة مسبقًا، مثل:

    • Graph Convolutional Network (GCN)
    • GraphSAGE
    • ChebNet
    • GAT (Graph Attention Network)
    • EdgeConv
    • ... والمزيد
  • معالجة البيانات والتحويل: توفر وظائف مريحة لمعالجة بيانات الرسوم البيانية وتحويلها، مثل:

    • تحميل البيانات وتخزينها
    • أخذ عينات من الرسوم البيانية
    • تقسيم الرسوم البيانية
    • تطبيع الميزات
  • دعم تمثيلات رسوم بيانية متعددة: تدعم طرق تمثيل رسوم بيانية مختلفة، مثل:

    • مصفوفة التجاور
    • قائمة الحواف
    • مصفوفة متفرقة

سيناريوهات التطبيق

يمكن تطبيق PyG في مختلف المجالات، بما في ذلك:

  • تحليل الشبكات الاجتماعية: على سبيل المثال، التنبؤ بعلاقات المستخدمين، واكتشاف المجتمعات، وتحليل التأثير، وما إلى ذلك.
  • التنبؤ بالخصائص الجزيئية: على سبيل المثال، اكتشاف الأدوية وتصميم المواد وما إلى ذلك.
  • الاستدلال في مخططات المعرفة: على سبيل المثال، التنبؤ بعلاقات الكيانات، وإكمال المعرفة، وما إلى ذلك.
  • أنظمة التوصية: على سبيل المثال، خوارزميات التوصية القائمة على هياكل الرسوم البيانية.
  • رؤية الكمبيوتر: على سبيل المثال، معالجة السحب النقطية وتجزئة الصور وما إلى ذلك.
  • معالجة اللغة الطبيعية: على سبيل المثال، استخراج العلاقات والترميز الدلالي للأدوار وما إلى ذلك.
  • مجالات أخرى: التنبؤ بحركة المرور، وتقييم المخاطر المالية، وما إلى ذلك.

مثال على التعليمات البرمجية (مختصر)

import torch
from torch_geometric.data import Data
from torch_geometric.nn import GCNConv

# تعريف بيانات الرسم البياني
edge_index = torch.tensor([[0, 1], [1, 2], [2, 0]], dtype=torch.long).t().contiguous()
x = torch.randn(3, 16)  # 3 عقد، كل عقدة ذات 16 بعدًا من الميزات

data = Data(x=x, edge_index=edge_index)

# تعريف نموذج GCN
class GCN(torch.nn.Module):
    def __init__(self, hidden_channels):
        super().__init__()
        torch.manual_seed(12345)
        self.conv1 = GCNConv(data.num_node_features, hidden_channels)
        self.conv2 = GCNConv(hidden_channels, data.num_classes)

    def forward(self, x, edge_index):
        x = self.conv1(x, edge_index).relu()
        x = self.conv2(x, edge_index)
        return x

model = GCN(hidden_channels=16)

# الانتشار الأمامي
out = model(data.x, data.edge_index)
print(out)

ملخص

PyTorch Geometric هي مكتبة قوية ومرنة توفر أساسًا متينًا لبحث وتطبيق الشبكات العصبية البيانية. إن سهولة استخدامها وكفاءتها وقابليتها للتوسع تجعلها خيارًا مثاليًا لمعالجة البيانات ذات الهياكل غير المنتظمة.

جميع التفاصيل، يرجى الرجوع إلى الموقع الرسمي (https://github.com/pyg-team/pytorch_geometric)