Home
Login
pyg-team/pytorch_geometric

PyTorch Geometric (PyG) es una biblioteca de redes neuronales gráficas construida sobre PyTorch, diseñada para simplificar el procesamiento de datos estructurados en grafos y el desarrollo de redes neuronales gráficas.

MITPython 22.5kpyg-team Last Updated: 2025-06-13
https://github.com/pyg-team/pytorch_geometric

PyTorch Geometric (PyG)

Resumen del Proyecto

PyTorch Geometric (PyG) es una biblioteca basada en PyTorch, especializada en el procesamiento de datos de entrada con estructuras irregulares, como grafos (graphs), nubes de puntos (point clouds) y variedades (manifolds). Proporciona una serie de métodos para construir redes neuronales de grafos (GNNs), incluyendo varios operadores de convolución de grafos, capas de pooling, herramientas de procesamiento de datos y marcos de aprendizaje. PyG está diseñado para simplificar el desarrollo y la experimentación con GNNs, y ofrece implementaciones eficientes con aceleración por GPU.

Contexto

Los marcos de aprendizaje profundo tradicionales están diseñados principalmente para datos estructurados en forma de rejilla (como imágenes y vídeos). Sin embargo, en el mundo real existe una gran cantidad de datos con estructuras irregulares, como redes sociales, estructuras moleculares, grafos de conocimiento, etc. El procesamiento de estos datos requiere herramientas y algoritmos especializados. La aparición de PyG llena este vacío, proporcionando una plataforma unificada para construir y entrenar varios tipos de modelos GNN.

Características Principales

  • Facilidad de uso: PyG proporciona una API concisa que permite a los usuarios definir y entrenar modelos GNN fácilmente. Se integra perfectamente con PyTorch, permitiendo a los usuarios aprovechar todas las funcionalidades de PyTorch.

  • Eficiencia: PyG implementa versiones aceleradas por GPU de varios operadores de convolución de grafos, lo que permite procesar datos de grafos a gran escala de manera eficiente. También admite operaciones con matrices dispersas, lo que mejora aún más la eficiencia.

  • Flexibilidad: PyG proporciona una amplia gama de herramientas de procesamiento de datos de grafos, incluyendo carga de datos, transformación de datos, partición de datos, etc. Los usuarios pueden personalizar los flujos de procesamiento de datos según sus necesidades.

  • Escalabilidad: La arquitectura de PyG está diseñada con buena escalabilidad, lo que permite a los usuarios agregar fácilmente nuevos operadores de convolución de grafos, capas de pooling y métodos de procesamiento de datos.

  • Amplia variedad de capas de redes neuronales de grafos: Proporciona una gran cantidad de capas de redes neuronales de grafos predefinidas, como:

    • Red Convolucional de Grafos (GCN)
    • GraphSAGE
    • ChebNet
    • GAT (Red de Atención de Grafos)
    • EdgeConv
    • ... y muchas más
  • Procesamiento y transformación de datos: Proporciona funciones convenientes para el procesamiento y la transformación de datos de grafos, como:

    • Carga y almacenamiento de datos
    • Muestreo de grafos
    • Partición de grafos
    • Normalización de características
  • Soporte para múltiples representaciones de grafos: Admite diferentes métodos de representación de grafos, como:

    • Matriz de adyacencia
    • Lista de aristas
    • Matriz dispersa

Escenarios de Aplicación

PyG se puede aplicar en varios campos, incluyendo:

  • Análisis de redes sociales: Por ejemplo, predicción de relaciones de usuarios, detección de comunidades, análisis de influencia, etc.
  • Predicción de propiedades moleculares: Por ejemplo, descubrimiento de fármacos, diseño de materiales, etc.
  • Inferencia de grafos de conocimiento: Por ejemplo, predicción de relaciones entre entidades, completado de conocimiento, etc.
  • Sistemas de recomendación: Por ejemplo, algoritmos de recomendación basados en estructuras de grafos.
  • Visión por computador: Por ejemplo, procesamiento de nubes de puntos, segmentación de imágenes, etc.
  • Procesamiento del lenguaje natural: Por ejemplo, extracción de relaciones, etiquetado de roles semánticos, etc.
  • Otros campos: Predicción del tráfico, evaluación de riesgos financieros, etc.

Código de Ejemplo (Simplificado)

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

# Definir datos del grafo
edge_index = torch.tensor([[0, 1], [1, 2], [2, 0]], dtype=torch.long).t().contiguous()
x = torch.randn(3, 16)  # 3 nodos, cada nodo con características de 16 dimensiones

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

# Definir modelo 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)

# Propagación hacia adelante
out = model(data.x, data.edge_index)
print(out)

Resumen

PyTorch Geometric es una biblioteca poderosa y flexible que proporciona una base sólida para la investigación y aplicación de redes neuronales de grafos. Su facilidad de uso, eficiencia y escalabilidad la convierten en una opción ideal para el procesamiento de datos con estructuras irregulares.

Para obtener todos los detalles, consulte el sitio web oficial (https://github.com/pyg-team/pytorch_geometric)