Documentación | Papel | Cuadernos de colab y tutoriales de video | Recursos externos | Ejemplos de OGB
PYG (Pytorch geométrico) es una biblioteca construida sobre Pytorch para escribir y entrenar fácilmente las redes neuronales gráficas (GNN) para una amplia gama de aplicaciones relacionadas con datos estructurados.
Consiste en varios métodos para el aprendizaje profundo en gráficos y otras estructuras irregulares, también conocidas como aprendizaje geométrico profundo , de una variedad de artículos publicados. Además, consiste en cargadores de mini lotes fáciles de usar para operar en muchos gráficos gigantes pequeños y individuales, soporte de GPU múltiple, soporte de torch.compile , soporte DataPipe , una gran cantidad de conjuntos de datos de referencia comunes (basados en interfaces simples para crear su propia), y transformaciones útiles, tanto para aprender en gráficos arbitrarios, así como en Mashes o puntos simples.
¡Haga clic aquí para unirse a nuestra comunidad Slack!
- Lo más destacado de la biblioteca
- Tour rápida para nuevos usuarios
- Descripción general de la arquitectura
- Modelos GNN implementados
- Instalación
Lo más destacado de la biblioteca
Ya sea que sea un investigador de aprendizaje automático o un usuario de los kits de herramientas de aprendizaje automático, aquí hay algunas razones para probar PYG para el aprendizaje automático en datos estructurados por gráficos.
- API fácil de usar y unificada : todo lo que se necesita es de 10-20 líneas de código para comenzar con el entrenamiento de un modelo GNN (consulte la siguiente sección para un recorrido rápido). Pyg es Pytorch-on-the-rocks : utiliza una API centrada en el tensor y mantiene los principios de diseño cerca de Vanilla Pytorch. Si ya está familiarizado con Pytorch, utilizar PYG es sencillo.
- Modelos GNN integrales y bien mantenidos : la mayoría de las arquitecturas de redes neuronales gráficas de última generación han sido implementadas por desarrolladores de la biblioteca o autores de trabajos de investigación y están listas para ser aplicadas.
- Gran flexibilidad : los modelos PYG existentes se pueden extender fácilmente para realizar su propia investigación con GNN. Hacer modificaciones a los modelos existentes o crear nuevas arquitecturas es simple, gracias a su API de aprobación de mensajes fáciles de usar y una variedad de operadores y funciones de utilidad.
- Modelos GNN del mundo real a gran escala : nos centramos en la necesidad de aplicaciones GNN en escenarios desafiantes del mundo real y apoyamos el aprendizaje en diversos tipos de gráficos, incluidos, entre otros,: GNN escalables para gráficos con millones de nodos; GNN dinámicos para predicciones de nodos a lo largo del tiempo; GNN heterogéneos con múltiples tipos de nodos y tipos de borde.
Tour rápida para nuevos usuarios
En este recorrido rápido, destacamos la facilidad de crear y entrenar un modelo GNN con solo unas pocas líneas de código.
Entrena tu propio modelo GNN
A primera vista de PYG, implementamos la capacitación de un GNN para clasificar los documentos en un gráfico de citas. Para esto, cargamos el conjunto de datos CORA y creamos un modelo GCN de 2 capas simple utilizando el GCNConv predefinido:
import torch
from torch import Tensor
from torch_geometric . nn import GCNConv
from torch_geometric . datasets import Planetoid
dataset = Planetoid ( root = '.' , name = 'Cora' )
class GCN ( torch . nn . Module ):
def __init__ ( self , in_channels , hidden_channels , out_channels ):
super (). __init__ ()
self . conv1 = GCNConv ( in_channels , hidden_channels )
self . conv2 = GCNConv ( hidden_channels , out_channels )
def forward ( self , x : Tensor , edge_index : Tensor ) -> Tensor :
# x: Node feature matrix of shape [num_nodes, in_channels]
# edge_index: Graph connectivity matrix of shape [2, num_edges]
x = self . conv1 ( x , edge_index ). relu ()
x = self . conv2 ( x , edge_index )
return x
model = GCN ( dataset . num_features , 16 , dataset . num_classes ) Ahora podemos optimizar el modelo en un bucle de entrenamiento, similar al procedimiento estándar de entrenamiento de Pytorch.
import torch . nn . functional as F
data = dataset [ 0 ]
optimizer = torch . optim . Adam ( model . parameters (), lr = 0.01 )
for epoch in range ( 200 ):
pred = model ( data . x , data . edge_index )
loss = F . cross_entropy ( pred [ data . train_mask ], data . y [ data . train_mask ])
# Backpropagation
optimizer . zero_grad ()
loss . backward ()
optimizer . step () Se puede encontrar más información sobre la evaluación del rendimiento final del modelo en el ejemplo correspondiente.
Crea tu propia capa GNN
Además de la fácil aplicación de los GNN existentes, PYG hace que sea simple implementar redes neuronales gráficas personalizadas (ver aquí para ver el tutorial adjunto). Por ejemplo, esto es todo lo que se necesita para implementar la capa convolucional Edge de Wang et al. :
$$ x_i^{ prime} ~ = ~ max_ {j in mathcal {n} (i)} ~ textrm {mlp} _ { theta} izquierd ([~ x_i, ~ x_j - x_i ~] recto) $$)
import torch
from torch import Tensor
from torch . nn import Sequential , Linear , ReLU
from torch_geometric . nn import MessagePassing
class EdgeConv ( MessagePassing ):
def __init__ ( self , in_channels , out_channels ):
super (). __init__ ( aggr = "max" ) # "Max" aggregation.
self . mlp = Sequential (
Linear ( 2 * in_channels , out_channels ),
ReLU (),
Linear ( out_channels , out_channels ),
)
def forward ( self , x : Tensor , edge_index : Tensor ) -> Tensor :
# x: Node feature matrix of shape [num_nodes, in_channels]
# edge_index: Graph connectivity matrix of shape [2, num_edges]
return self . propagate ( edge_index , x = x ) # shape [num_nodes, out_channels]
def message ( self , x_j : Tensor , x_i : Tensor ) -> Tensor :
# x_j: Source node features of shape [num_edges, in_channels]
# x_i: Target node features of shape [num_edges, in_channels]
edge_features = torch . cat ([ x_i , x_j - x_i ], dim = - 1 )
return self . mlp ( edge_features ) # shape [num_edges, out_channels] Descripción general de la arquitectura
PYG proporciona un marco de múltiples capas que permite a los usuarios construir soluciones de red neuronal gráfica en niveles bajos y altos. Comprende los siguientes componentes:
- El motor PYG utiliza el potente marco de aprendizaje profundo de Pytorch con soporte completo de
torch.compile y antorchscript, así como adiciones de bibliotecas eficientes de CPU/CUDA para operar con datos dispersos, por ejemplo , pyg-lib . - El almacenamiento PYG maneja el procesamiento de datos, la transformación y la carga de las tuberías. Es capaz de manejar y procesar conjuntos de datos de gráficos a gran escala, y proporciona soluciones efectivas para gráficos heterogéneos. Además, proporciona una variedad de soluciones de muestreo, que permiten el entrenamiento de GNN en gráficos a gran escala.
- Los operadores de PYG agrupan funcionalidades esenciales para implementar redes neuronales gráficas. PYG admite importantes bloques de construcción GNN que se pueden combinar y aplicar a varias partes de un modelo GNN, asegurando una rica flexibilidad del diseño de GNN.
- Finalmente, PYG proporciona un conjunto abundante de modelos GNN y ejemplos que muestran modelos GNN en puntos de referencia gráficos estándar. Gracias a su flexibilidad, los usuarios pueden construir y modificar fácilmente los modelos GNN personalizados para satisfacer sus necesidades específicas.
Modelos GNN implementados
Actualmente enumeramos modelos, capas y operadores de PYG de acuerdo con la categoría:
Capas de GNN: todas las capas de red neuronal gráfica se implementan a través de la interfaz nn.MessagePassing . Una capa GNN especifica cómo realizar el paso de mensajes, es decir, diseñando funciones diferentes de mensajes, agregación y actualización como se define aquí. Estas capas GNN se pueden apilar para crear modelos de red neuronales gráficas.
- GCNConv de KIPF y Welling: Clasificación semi-supervisada con redes convolucionales de gráficos (ICLR 2017) [ Ejemplo ]
- Chebconv de Defferrard et al. : Redes neuronales convolucionales en gráficos con filtrado espectral localizado rápido (NIPS 2016) [ Ejemplo ]
- Gatconv de Veličković et al. : Redes de atención de gráficos (ICLR 2018) [ Ejemplo ]
Expandirse para ver todas las capas de GNN implementadas ...
- GCN2Conv de Chen et al. : Redes convolucionales de gráficos simples y profundos (ICML 2020) [ Ejemplo1 , ejemplo2 ]
- Splineconv de Fey et al. : Splinecnn: aprendizaje profundo geométrico rápido con núcleos B-spline continuos (CVPR 2018) [ Ejemplo1 , Ejemplo2 ]
- NNConv de Gilmer et al. : Mensaje neuronal aprobando la química cuántica (ICML 2017) [ Ejemplo1 , ejemplo2 ]
- CGCONV de XIE y Grossman: Redes neuronales convolucionales de Crystal Graph para una predicción precisa e interpretable de las propiedades del material (Physical Review Letters 120, 2018)
- ECCONV de Simonovsky y Komodakis: convolución acondicionada por el borde en gráficos (CVPR 2017)
- Egconv de Sasta et al. : Filtros adaptativos y fusión del agregador para convoluciones de gráficos eficientes (GNNSYS 2021) [ Ejemplo ]
- GATV2Conv de Brody et al. : ¿Qué tan atenta son las redes de atención gráfica? (ICLR 2022)
- TransformerConv de Shi et al. : Predicción de etiquetas enmascaradas: modelo de aprobación de mensajes unificados para la clasificación semi-supervisada (Corr 2020) [ Ejemplo ]
- Sageconv de Hamilton et al. : Representación inductiva Aprendizaje en gráficos grandes (NIPS 2017) [ Ejemplo1 , ejemplo2 , ejemplo3 , ejemplo4 ]
- GraphConv de, por ejemplo , Morris et al. : Weisfeiler y Leman Go Neural: redes neuronales gráficas de orden superior (AAAI 2019)
- GatedGraphconv de Li et al. : Redes neuronales de secuencia de gráficos cerrados (ICLR 2016)
- ResgatedGraphConv de Bresson y Laurent: convnets de gráficos con cerrada residual (Corr 2017)
- Ginconv de Xu et al. : ¿Qué tan poderosas son las redes neuronales gráficas? (ICLR 2019) [ Ejemplo ]
- Gineconv de Hu et al. : Estrategias para la capacitación de redes neuronales de gráficos previos (ICLR 2020)
- Armaconv de Bianchi et al. : Redes neuronales gráficas con filtros ARMA convolucionales (Corr 2019) [ Ejemplo ]
- SGCONV de Wu et al. : Simplificar redes convolucionales de gráficos (Corr 2019) [ ejemplo ]
- APPNP de Klicpera et al. : Predecir luego propague: las redes neuronales gráficas se encuentran con PageRank personalizado (ICLR 2019) [ Ejemplo ]
- MFConv de Duvenaud et al. : Redes convolucionales en gráficos para el aprendizaje de huellas digitales moleculares (NIPS 2015)
- Agnnconv de TheKumparampil et al. : Red neuronal gráfica basada en la atención para el aprendizaje semi-supervisado (Corr 2017) [ Ejemplo ]
- Tagconv de Du et al. : Topology Adaptive Graph Convolutional Networks (Corr 2017) [ Ejemplo ]
- PNACONV de Corso et al. : Agregación principal del vecindario para redes gráficas (Corr 2020) [ ejemplo ]
- Faconv de Bo et al. : Más allá de la información de baja frecuencia en redes convolucionales gráficas (AAAI 2021)
- PDNCONV de Rozemberczki et al. : Redes de descubrimiento de Pathfinder para el paso de mensajes neuronales (www 2021)
- Rgcnconv de Schlichtkrull et al. : Modelado de datos relacionales con redes convolucionales gráficas (ESWC 2018) [ Ejemplo1 , ejemplo2 ]
- RGATCONV de Busbridge et al. : Redes de atención de gráficos relacionales (Corr 2019) [ ejemplo ]
- FilmConv de Brockschmidt: GNN-Film: Redes neuronales gráficas con modulación lineal en términos de funciones (ICML 2020) [ Ejemplo ]
- Conconv firmado de Derr et al. : Red convolucional de gráfico firmado (ICDM 2018) [ Ejemplo ]
- Dnaconv de Fey: Just Jump: Agregación dinámica del vecindario en redes neuronales Graph (ICLR-W 2019) [ Ejemplo ]
- Panconv de Ma et al. : Convolución y agrupación basada en la integral Path para redes neuronales gráficas (Neurips 2020)
- PointNetConv (incluido el muestreo de puntos más lejano iterativo , la generación de gráficos dinámicos basada en la distancia vecina o máxima más cercana, e interpolación K-NN para muestreo ascendente) de Qi et al. : PointNet: aprendizaje profundo en conjuntos de puntos para clasificación y segmentación 3D (CVPR 2017) y PointNet ++: aprendizaje de características jerárquicas profundas en conjuntos de puntos en un espacio métrico (NIPS 2017) [ Ejemplo1 , ejemplo2 ]
- Edgeconv de Wang et al. : Dynamic Graph CNN para aprender en las nubes de puntos (Corr, 2018) [ Ejemplo1 , ejemplo2 ]
- XConv de Li et al. : PointCnn: Convolución en puntos transformados en X (Neurips 2018) [ Ejemplo ]
- PPFConv de Deng et al. : PPFNET: características locales conscientes del contexto global para una coincidencia robusta de puntos 3D (CVPR 2018)
- GmmConv de Monti et al. : Aprendizaje geométrico profundo en gráficos y colectores utilizando CNNS modelo de mezcla (CVPR 2017)
- FeastConv de Verma et al. : Feastnet: convoluciones de gráficos organizados por características para el análisis de forma 3D (CVPR 2018)
- PointTransformerConv de Zhao et al. : Point Transformer (2020)
- Hypergraphconv de Bai et al. : Hypergraph Convolution and Hypergraph Attent (Corr 2019)
- GravNetConv de Qasim et al. : Representaciones de aprendizaje de geometría de detector de partículas irregulares con redes de gráficos ponderados a distancia (European Physics Journal C, 2019)
- Supergat de Kim y OH: Cómo encontrar su amigable vecindario: Diseño de atención de gráficos con auto-supervisión (ICLR 2021) [ Ejemplo ]
- Hgtconv de Hu et al. : Transformador de gráficos heterogéneo (www 2020) [ ejemplo ]
- HeatConv de Mo et al. : Red de atención de gráficos con bordes heterogéneo para predicción de trayectoria de múltiples agentes (Corr 2021)
- SSGCONV de Zhu et al. : Convolución de gráfico espectral simple (ICLR 2021)
- FusedgatConv de Zhang et al. : Comprensión del gráfico computacional de GNN: una perspectiva de computación coordinada, IO y memoria (MLSYS 2022)
- GPSConv de Rampášek et al. : Receta para un transformador gráfico general, potente y escalable (Neurips 2022) [ Ejemplo ]
Capas de agrupación: las capas de agrupación de gráficos combinan las representaciones vectoriales de un conjunto de nodos en un gráfico (o un subgrafio) en una sola representación vectorial que resume sus propiedades de los nodos. Se aplica comúnmente a tareas a nivel gráfico, que requieren combinar las características de nodo en una sola representación de gráficos.
- Agrupación de Top-K de GAO y JI: Graph U-Nets (ICML 2019), Cangea et al. : Hacia clasificadores de gráficos jerárquicos escasos (Neurips-W 2018) y Knyazev et al. : Comprender la atención y la generalización en las redes neuronales gráficas (ICLR-W 2019) [ Ejemplo ]
- Diffpool de Ying et al. : Learning jerárquico de representación de gráficos con agrupación diferenciable (Neurips 2018) [ Ejemplo ]
Expandirse para ver todas las capas de agrupación implementadas ...
- Agregación atencional de Li et al. : Redes de coincidencia de gráficos para aprender la similitud de los objetos estructurados gráficos (ICML 2019) [ Ejemplo ]
- Set2set de Vinyals et al. : Order Matters: secuencia a secuencia para conjuntos (ICLR 2016) [ Ejemplo ]
- Ordenar agregación de Zhang et al. : Una arquitectura de aprendizaje profundo de extremo a extremo para la clasificación de gráficos (AAAI 2018) [ Ejemplo ]
- Mincut Agrupación de Bianchi et al. : Clustering espectral con redes neuronales gráficas para la agrupación de gráficos (ICML 2020) [ Ejemplo ]
- Agrupación de DMON de Tsitsulin et al. : Granización de gráficos con redes neuronales gráficas (Corr 2020) [ ejemplo ]
- Graclus agrupación de Dhillon et al. : Cortes de gráficos ponderados sin vectores propios: un enfoque multinivel (Pami 2007) [ Ejemplo ]
- Voxel Grid Agrupo de, por ejemplo , Simonovsky y Komodakis: filtros dinámicos con bordes en redes neuronales convolucionales en gráficos (CVPR 2017) [ Ejemplo ]
- Agrupación de SAG de Lee et al. : Agrupación de gráficos de autoatención (ICML 2019) y Knyazev et al. : Comprender la atención y la generalización en las redes neuronales gráficas (ICLR-W 2019) [ Ejemplo ]
- Agrupación de borde de Diehl et al. : Hacia la agrupación de gráficos por contracción de borde (ICML-W 2019) y Diehl: acumulación de contracción de borde para redes neuronales gráficas (Corr 2019) [ Ejemplo ]
- Asapoling de Ranjan et al. : ASAP: estructura adaptativa consciente de la agrupación para el aprendizaje de representaciones de gráficos jerárquicos (AAAI 2020) [ Ejemplo ]
- Panpooling de Ma et al. : Convolución y agrupación basada en la integral Path para redes neuronales gráficas (Neurips 2020)
- Mempooling de Khasahmadi et al. : Redes gráficas basadas en memoria (ICLR 2020) [ ejemplo ]
- Transformador Multiset Graph de Baek et al. : Aprendizaje preciso de representaciones gráficas con agrupación multisética Graph (ICLR 2021) [ Ejemplo ]
- Agregación de equilibrio de Bartunov et al. : (UAI 2022) [ Ejemplo ]
Modelos GNN: nuestros modelos GNN compatibles incorporan múltiples capas de pasamiento de mensajes, y los usuarios pueden usar directamente estos modelos predefinidos para hacer predicciones en gráficos. A diferencia del apilamiento simple de las capas de GNN, estos modelos podrían implicar preprocesamiento, parámetros aprendices adicionales, conexiones de omisión, gráficos engrosamiento, etc.
- Schnet de Schütt et al. : Schnet: una red neuronal convolucional de filtro continuo para modelar interacciones cuánticas (NIPS 2017) [ Ejemplo ]
- Dimenet y Dimenetplusplus de Klicpera et al. : Paso de mensajes direccionales para gráficos moleculares (ICLR 2020) y el paso de mensajes direccionales rápidos y conscientes de la incertidumbre para moléculas sin equilibrio (Neurips-W 2020) [ ejemplo ]
- Node2Vec de Grover y Leskovec: Node2Vec: aprendizaje de características escalables para redes (KDD 2016) [ Ejemplo ]
- Profunde Graph Infomax de Veličković et al. : Deep Graph Infomax (ICLR 2019) [ Ejemplo1 , ejemplo2 ]
- Profunde Multiplex Graph Infomax de Park et al. : Incrustación de red multiplex atribuida no supervisada (AAAI 2020) [ Ejemplo ]
- Predicción de etiquetas enmascaradas de Shi et al. : Predicción de etiquetas enmascaradas: modelo de aprobación de mensajes unificados para la clasificación semi-supervisada (Corr 2020) [ Ejemplo ]
- PMLP de Yang et al. : Las redes neuronales gráficas son inherentemente buenos generalizadores: información al unir GNN y MLP (ICLR 2023)
Expandirse para ver todos los modelos GNN implementados ...
- Salto de conocimiento de Xu et al. : Representación del aprendizaje en gráficos con redes de conocimiento de salto (ICML 2018) [ Ejemplo ]
- Una capa de metal para construir cualquier tipo de red gráfica similar a la biblioteca de Nets Graph TensorFlow de Battaglia et al. : Sesgos inductivos relacionales, aprendizaje profundo y redes de gráficos (Corr 2018)
- Metapath2Vec de Dong et al. : metapath2vec: aprendizaje de representación escalable para redes heterogéneas (KDD 2017) [ Ejemplo ]
- Todas las variantes de Autoencoders Graph y Autoencoders variacionales de:
- Gráfico variacional codificadores automáticos de KIPF y Welling (NIPS-W 2016) [ Ejemplo ]
- Autoencoder de gráficos con adversidad a la inserción de gráficos de Pan et al. (IJCAI 2018) [ Ejemplo ]
- Autoencoders de gráficos simples y efectivos con modelos lineales de un salto de Salha et al. (ECML 2020) [ Ejemplo ]
- Sello de Zhang y Chen: predicción de enlace basada en redes neuronales gráficas (Neurips 2018) [ Ejemplo ]
- Renet de Jin et al. : Red de eventos recurrentes para razonamiento sobre gráficos de conocimiento temporal (ICLR-W 2019) [ Ejemplo ]
- Graphunet de GAO y JI: Graph U-Nets (ICML 2019) [ Ejemplo ]
- AttentiveFP de Xiong et al. : Empujar los límites de la representación molecular para el descubrimiento de fármacos con el mecanismo de atención del gráfico (J. Med. Chem. 2020) [ Ejemplo ]
- Deepgcn y el genconv de Li et al. : DeepGcns: ¿pueden los GCN tan profundos como los CNN? (ICCV 2019) y Deepergcn: todo lo que necesita para entrenar GCN más profundos (Corr 2020) [ Ejemplo ]
- Rect de Wang et al. : Incrustación de la red con etiquetas completamente ilustradas (TKDE 2020) [ Ejemplo ]
- GNNExPlainer de Ying et al. : GNNEXPlainer: Generación de explicaciones para redes neuronales Graph (Neurips 2019) [ Ejemplo1 , Ejemplo2 , Ejemplo3 ]
- Redes neuronales sin gráficos de Zhang et al. : Redes neuronales sin gráficos: enseñando nuevos trucos de MLPS a través de la destilación (Corr 2021) [ Ejemplo ]
- Linkx de Lim et al. : Aprendizaje a gran escala en gráficos no homófilos: nuevos puntos de referencia y métodos simples fuertes (Neurips 2021) [ Ejemplo ]
- Revgnn de Li et al. : Graph Graph Neural con 1000 capas (ICML 2021) [ Ejemplo ]
- Transe de Bordes et al. : Traducción de integridades para modelar datos multirelacionales (NIPS 2013) [ Ejemplo ]
- Complejo de Trouillon et al. : Incrustaciones complejas para predicción de enlaces simples (ICML 2016) [ Ejemplo ]
- Distmult de Yang et al. : Entidades y relaciones para el aprendizaje e inferencia en las bases de conocimiento (ICLR 2015) [ Ejemplo ]
- Girar de Sun et al. : Rotar: gráfico de conocimiento incrustado por rotación relacional en un espacio complejo (ICLR 2019) [ Ejemplo ]
Operadores y utilidades de GNN: PYG viene con un rico conjunto de operadores de redes neuronales que se usan comúnmente en muchos modelos GNN. Siguen un diseño extensible: es fácil aplicar estos operadores y utilidades gráficos a las capas y modelos de GNN existentes para mejorar aún más el rendimiento del modelo.
- Dropedge de Rong et al. : Dropedge: hacia redes convolucionales de gráficos profundos en la clasificación de nodos (ICLR 2020)
- Dropnode , MaskFeature y AdDrandomEdge de usted et al. : Graph Contrastive Learning con aumentos (Neurips 2020)
- Droppath de Li et al. : Maskgae: el modelado de gráficos enmascarados cumple con los autoencoders de gráficos (ARXIV 2022)
- Shufflenode de Veličković et al. : Deep Graph Infomax (ICLR 2019)
- Grafnorm de Cai et al. : Graphnorm: un enfoque de principios para acelerar el entrenamiento de red neuronal del gráfico (ICML 2021)
- GDC de Klicpera et al. : La difusión mejora el aprendizaje gráfico (Neurips 2019) [ Ejemplo ]
Expandirse para ver todos los operadores y utilidades de GNN implementados ...
- Graphsizenorm de Dwivedi et al. : Redes neuronales del gráfico de evaluación comparativa (Corr 2020)
- PareNorm de Zhao y Akoglu: PareNorm: abordar sobreventa en GNNS (ICLR 2020)
- MEDIACTRACTIONNNORM de Yang et al. : Revisando "superación excesiva" en GCNS profundos (Corr 2020)
- DiffgroupNorm de Zhou et al. : Hacia redes neuronales gráficas más profundas con normalización de grupo diferenciable (Neurips 2020)
- Descomposición del árbol de Jin et al. : Autoencoder variacional del árbol de unión para la generación de gráficos moleculares (ICML 2018)
- TGN de Rossi et al. : Redes de gráficos temporales para el aprendizaje profundo en gráficos dinámicos (GRL+ 2020) [ Ejemplo ]
- Weisfeiler Lehman Operator de Weisfeiler y Lehman: una reducción de un gráfico a una forma canónica y un álgebra que surge durante esta reducción (Nauchno-Technicheskaya informatsia 1968) [ Ejemplo ]
- Operador continuo de Weisfeiler Lehman de Togninalli et al. : Wasserstein Weisfeiler-Lehman Graph Kernels (Neurips 2019)
- Propagación de etiquetas de Zhu y Ghahramani: aprendizaje de datos etiquetados y no etiquetados con propagación de etiquetas (CMU-CALD 2002) [ Ejemplo ]
- Perfil de grado local de Cai y Wang: una línea de base simple pero efectiva para la clasificación de gráficos no atributos (Corr 2018)
- Correcto ysmooth de Huang et al. : Combinar la propagación de etiquetas y los modelos simples superan las redes neuronales Graph (Corr 2020) [ Ejemplo ]
- La regularización de Gini y Bro de Henderson et al. : Mejora de la explicación de la red neuronal del gráfico molecular con ortonormalización y escasez inducida (ICML 2021)
- Rootedegonets y roadedrwsubgraph de Zhao et al. : De las estrellas a los subgrafos: alquilar cualquier GNN con conciencia de la estructura local (ICLR 2022)
- Propropagación de características de Rossi et al. : Sobre la efectividad irrazonable de la propagación de características en el aprendizaje en gráficos con características de nodo faltantes (Corr 2021)
GNN de escalable: PYG admite la implementación de redes neuronales gráficas que pueden escalar a gráficos a gran escala. Dicha aplicación es un desafío ya que todo el gráfico, sus características asociadas y los parámetros GNN no pueden caber en la memoria de GPU. Muchos enfoques de escalabilidad de vanguardia abordan este desafío al muestrear vecindarios para capacitación en mini lotes, agrupación de gráficos y partición, o mediante el uso de modelos GNN simplificados. Estos enfoques se han implementado en PYG y pueden beneficiarse de las capas, operadores y modelos de GNN anteriores.
- Vecario de Hamilton et al. : Representación inductiva Aprendizaje en gráficos grandes (NIPS 2017) [ Ejemplo1 , ejemplo2 , ejemplo3 ]
- Clustergcn de Chiang et al. : Cluster-GCN: un algoritmo eficiente para el entrenamiento de redes convolucionales gráficas profundas y grandes (KDD 2019) [ Ejemplo1 , Ejemplo2 ]
- GraphSaint de Zeng et al. : GraphSaint: Método de aprendizaje inductivo basado en muestreo de gráficos (ICLR 2020) [ Ejemplo ]
Expandirse para ver todos los GNN escalables implementados ...
- Sombra de Zeng et al. : Desacoplando la profundidad y el alcance de las redes neuronales gráficas (Neurips 2021) [ Ejemplo ]
- Señal de Rossi et al. : Signo: redes neuronales del gráfico de inicio escalable (Corr 2020) [ Ejemplo ]
- HGTLOGER de Hu et al. : Transformador de gráficos heterogéneo (www 2020) [ ejemplo ]
Instalación
PYG está disponible para Python 3.9 a Python 3.12.
Anaconda
¿Puede instalar PYG a través de Anaconda para todas las principales combinaciones de OS/Pytorch/Cuda? Si aún no ha instalado Pytorch, instálelo a través de conda como se describe en la documentación oficial de Pytorch. Dado que tiene Pytorch instalado ( >=1.8.0 ), simplemente ejecute
Pypi
Desde PYG 2.3 en adelante, puede instalar y usar PYG sin requerido ninguna biblioteca externa, excepto Pytorch. Para esto, simplemente corre
pip install torch_geometric
Bibliotecas adicionales
Si desea utilizar el conjunto completo de funciones de PYG, existe varias bibliotecas adicionales que desee instalar:
-
pyg-lib : operadores de GNN heterogéneos y rutinas de muestreo de gráficos -
torch-scatter : reducciones escasas aceleradas y eficientes -
torch-sparse : soporte SparseTensor -
torch-cluster : rutinas de agrupación de gráficos -
torch-spline-conv : soporte SplineConv
Estos paquetes vienen con sus propias implementaciones de CPU y Kernel GPU basadas en la interfaz de extensión Pytorch C ++/CUDA/HIP (ROCM). Para un uso básico de PYG, estas dependencias son completamente opcionales . Recomendamos comenzar con una instalación mínima e instalar dependencias adicionales una vez que comience a necesitarlas.
Para facilitar la instalación de estas extensiones, proporcionamos ruedas pip para todas las principales combinaciones de OS/Pytorch/CUDA, ver aquí.
Pytorch 2.5
Para instalar los binarios para Pytorch 2.5.0, simplemente ejecute
pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.5.0+${CUDA}.html
Donde ${CUDA} debe ser reemplazado por cpu , cu118 , cu121 o cu124 dependiendo de su instalación de Pytorch.
| cpu | cu118 | cu121 | cu124 |
|---|
| Linux | ✅ | ✅ | ✅ | ✅ |
| Windows | ✅ | ✅ | ✅ | ✅ |
| macosa | ✅ | | | |
Pytorch 2.4
Para instalar los binarios para Pytorch 2.4.0, simplemente ejecute
pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.4.0+${CUDA}.html
Donde ${CUDA} debe ser reemplazado por cpu , cu118 , cu121 o cu124 dependiendo de su instalación de Pytorch.
| cpu | cu118 | cu121 | cu124 |
|---|
| Linux | ✅ | ✅ | ✅ | ✅ |
| Windows | ✅ | ✅ | ✅ | ✅ |
| macosa | ✅ | | | |
Nota: También se proporcionan binarios de las versiones más antiguas para Pytorch 1.4.0, Pytorch 1.5.0, Pytorch 1.6.0, Pytorch 1.7.0/1.7.1, Pytorch 1.8.0/1.8.1, Pytorch 1.9.0, Pytorch 1.10.0/1.10.1/1.10.2, Pytorch 1.11.0, Pytorch 1.12.0/1.12.1, Pytorch 1.13.0/1.13.1, Pytorch 2.0.0/2.0.1, Pytorch 2.1.0/2.1.1/2.1.2, Pytorch 2.2.0/2.2.1/2.2.2 y Pytorch 2.3.0/2.3.1 (siguiente el mismo procedimiento). Para versiones anteriores, es posible que deba especificar explícitamente el último número de versión compatible o instalar a través de pip install --no-index para evitar una instalación manual desde la fuente. Puede buscar el último número de versión compatible aquí.
Nvidia pyg contenedor
NVIDIA proporciona un contenedor PYG Docker para capacitar sin esfuerzo e implementar GNN aceleradas con GPU con PYG, ver aquí.
Noche y maestro
En caso de que desee experimentar con las últimas características de PYG que aún no se lanzan completamente, instale la versión nocturna de PYG a través de
o instalar Pyg desde el maestro a través de
pip install git+https://github.com/pyg-team/pytorch_geometric.git
Ruedas rocm
El repositorio externo pyg-rocm-build proporciona ruedas e instrucciones detalladas sobre cómo instalar PYG para ROCM. Si tiene alguna pregunta al respecto, abra un problema aquí.
Citar
Cite nuestro documento (y los documentos respectivos de los métodos utilizados) si usa este código en su propio trabajo:
@inproceedings{Fey/Lenssen/2019,
title={Fast Graph Representation Learning with {PyTorch Geometric}},
author={Fey, Matthias and Lenssen, Jan E.},
booktitle={ICLR Workshop on Representation Learning on Graphs and Manifolds},
year={2019},
}
No dude en enviarnos un correo electrónico si desea que su trabajo se enumere en los recursos externos. Si nota algo inesperado, abra un problema y háganoslo saber. Si tiene alguna pregunta o le falta una característica específica, no dude en discutirlas con nosotros. Estamos motivados para hacer que Pyg sea aún mejor.