Home
Login

PyTorch Geometric (PyG) est une bibliothèque de réseaux neuronaux graphiques construite sur PyTorch, conçue pour simplifier le traitement des données structurées en graphes et le développement de réseaux neuronaux graphiques.

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

PyTorch Geometric (PyG)

Aperçu du projet

PyTorch Geometric (PyG) est une bibliothèque basée sur PyTorch, spécialement conçue pour traiter les données d'entrée à structure irrégulière, telles que les graphes, les nuages de points et les variétés. Elle offre une gamme de méthodes pour construire des réseaux de neurones graphiques (GNN), incluant divers opérateurs de convolution de graphes, des couches de pooling, des outils de traitement de données et des frameworks d'apprentissage. PyG vise à simplifier le développement et l'expérimentation des GNN, et fournit des implémentations efficaces avec accélération GPU.

Contexte

Les frameworks d'apprentissage profond traditionnels sont principalement conçus pour les données à structure régulière en grille (comme les images et les vidéos). Cependant, il existe une grande quantité de données à structure irrégulière dans le monde réel, telles que les réseaux sociaux, les structures moléculaires, les graphes de connaissances, etc. Le traitement de ces données nécessite des outils et des algorithmes spécialisés. L'apparition de PyG comble cette lacune en fournissant une plateforme unifiée pour construire et entraîner divers types de modèles GNN.

Caractéristiques principales

  • Facilité d'utilisation : PyG fournit une API concise qui permet aux utilisateurs de définir et d'entraîner facilement des modèles GNN. Elle s'intègre parfaitement à PyTorch, permettant aux utilisateurs de tirer parti de toutes les fonctionnalités de PyTorch.

  • Efficacité : PyG implémente des versions accélérées par GPU de divers opérateurs de convolution de graphes, ce qui permet de traiter efficacement des données de graphes à grande échelle. Elle prend également en charge les opérations sur matrices creuses, ce qui améliore encore l'efficacité.

  • Flexibilité : PyG fournit une riche collection d'outils de traitement de données de graphes, incluant le chargement de données, la transformation de données, la division de données, etc. Les utilisateurs peuvent personnaliser les flux de traitement de données en fonction de leurs besoins.

  • Extensibilité : L'architecture de PyG est conçue pour être facilement extensible, permettant aux utilisateurs d'ajouter facilement de nouveaux opérateurs de convolution de graphes, des couches de pooling et des méthodes de traitement de données.

  • Richesse des couches de réseaux de neurones graphiques : Fournit un grand nombre de couches de réseaux de neurones graphiques prédéfinies, telles que :

    • Graph Convolutional Network (GCN)
    • GraphSAGE
    • ChebNet
    • GAT (Graph Attention Network)
    • EdgeConv
    • ... et bien d'autres
  • Traitement et transformation des données : Fournit des fonctions pratiques de traitement et de transformation des données de graphes, telles que :

    • Chargement et stockage des données
    • Échantillonnage de graphes
    • Partitionnement de graphes
    • Normalisation des caractéristiques
  • Prise en charge de multiples représentations de graphes : Prend en charge différentes méthodes de représentation de graphes, telles que :

    • Matrice d'adjacence
    • Liste d'arêtes
    • Matrice creuse

Scénarios d'application

PyG peut être appliqué dans divers domaines, notamment :

  • Analyse des réseaux sociaux : Par exemple, la prédiction des relations entre utilisateurs, la détection de communautés, l'analyse d'influence, etc.
  • Prédiction des propriétés moléculaires : Par exemple, la découverte de médicaments, la conception de matériaux, etc.
  • Raisonnement sur les graphes de connaissances : Par exemple, la prédiction des relations entre entités, la complétion des connaissances, etc.
  • Systèmes de recommandation : Par exemple, les algorithmes de recommandation basés sur la structure des graphes.
  • Vision par ordinateur : Par exemple, le traitement des nuages de points, la segmentation d'images, etc.
  • Traitement du langage naturel : Par exemple, l'extraction de relations, l'étiquetage des rôles sémantiques, etc.
  • Autres domaines : Prédiction du trafic, évaluation des risques financiers, etc.

Exemple de code (simplifié)

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

# Définir les données du graphe
edge_index = torch.tensor([[0, 1], [1, 2], [2, 0]], dtype=torch.long).t().contiguous()
x = torch.randn(3, 16)  # 3 nœuds, chaque nœud avec 16 dimensions de caractéristiques

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

# Définir le modèle 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)

# Propagation avant
out = model(data.x, data.edge_index)
print(out)

Conclusion

PyTorch Geometric est une bibliothèque puissante et flexible qui fournit une base solide pour la recherche et l'application des réseaux de neurones graphiques. Sa facilité d'utilisation, son efficacité et son extensibilité en font un choix idéal pour le traitement des données à structure irrégulière.

Pour tous les détails, veuillez vous référer au site officiel (https://github.com/pyg-team/pytorch_geometric)