PyTorch Geometric (PyG) هي مكتبة مبنية على PyTorch، متخصصة في معالجة بيانات الإدخال ذات الهياكل غير المنتظمة، مثل الرسوم البيانية (graphs) والسحب النقطية (point clouds) والتشعبات (manifolds). توفر مجموعة من الأساليب لبناء شبكات عصبية بيانية (GNNs)، بما في ذلك مجموعة متنوعة من عوامل الالتفاف البياني، وطبقات التجميع، وأدوات معالجة البيانات، وأطر التعلم. تهدف PyG إلى تبسيط تطوير وتجربة GNNs، وتوفير تطبيقات مُسرَّعة بوحدة معالجة الرسومات (GPU) عالية الكفاءة.
تم تصميم أطر التعلم العميق التقليدية بشكل أساسي للبيانات الشبكية المنتظمة (مثل الصور ومقاطع الفيديو). ومع ذلك، يوجد في العالم الحقيقي كمية كبيرة من البيانات ذات الهياكل غير المنتظمة، مثل الشبكات الاجتماعية والهياكل الجزيئية ومخططات المعرفة وما إلى ذلك. تتطلب معالجة هذه البيانات أدوات وخوارزميات متخصصة. يملأ ظهور PyG هذه الفجوة، حيث يوفر نظامًا أساسيًا موحدًا لبناء وتدريب أنواع مختلفة من نماذج GNN.
سهولة الاستخدام: توفر PyG واجهة برمجة تطبيقات (API) موجزة، مما يسهل على المستخدمين تحديد وتدريب نماذج GNN. تتكامل بسلاسة مع PyTorch، ويمكن للمستخدمين الاستفادة من جميع وظائف PyTorch.
الكفاءة: تنفذ PyG إصدارات مُسرَّعة بوحدة معالجة الرسومات (GPU) من عوامل الالتفاف البياني المختلفة، والتي يمكنها معالجة بيانات الرسوم البيانية واسعة النطاق بكفاءة. كما أنها تدعم عمليات المصفوفات المتفرقة، مما يزيد من الكفاءة.
المرونة: توفر PyG مجموعة غنية من أدوات معالجة بيانات الرسوم البيانية، بما في ذلك تحميل البيانات وتحويل البيانات وتقسيم البيانات وما إلى ذلك. يمكن للمستخدمين تخصيص عمليات معالجة البيانات وفقًا لاحتياجاتهم.
القابلية للتوسع: يتميز تصميم بنية PyG بقابلية توسع جيدة، ويمكن للمستخدمين بسهولة إضافة عوامل التفاف بياني جديدة وطبقات تجميع وطرق معالجة البيانات.
طبقات شبكة عصبية بيانية غنية: توفر عددًا كبيرًا من طبقات الشبكة العصبية البيانية المعرفة مسبقًا، مثل:
معالجة البيانات والتحويل: توفر وظائف مريحة لمعالجة بيانات الرسوم البيانية وتحويلها، مثل:
دعم تمثيلات رسوم بيانية متعددة: تدعم طرق تمثيل رسوم بيانية مختلفة، مثل:
يمكن تطبيق 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 هي مكتبة قوية ومرنة توفر أساسًا متينًا لبحث وتطبيق الشبكات العصبية البيانية. إن سهولة استخدامها وكفاءتها وقابليتها للتوسع تجعلها خيارًا مثاليًا لمعالجة البيانات ذات الهياكل غير المنتظمة.