Graficar redes convolucionales
Graficar redes convolucionales
Esta es una implementación de TensorFlow de Graph Convolutional Networks para la tarea de clasificación (semisupervisada) de nodos en un gráfico, como se describe en nuestro artículo:
Thomas N. Kipf, Max Welling, Clasificación semisupervisada con redes convolucionales gráficas (ICLR 2017)
Para una explicación de alto nivel, echa un vistazo a nuestra publicación de blog:
Thomas Kipf, Redes convolucionales gráficas (2016)
Instalación
python setup.py install
Requisitos
- tensorflow (>0.12)
- redx
Ejecute la demostración
cd gcn
python train.py
Datos
Para utilizar sus propios datos, debe proporcionar
- una matriz de adyacencia N por N (N es el número de nodos),
- una matriz de características N por D (D es el número de características por nodo), y
- una matriz de etiquetas binarias N por E (E es el número de clases).
Echa un vistazo a la load_data()
función en utils.py
para un ejemplo.
En este ejemplo, cargamos datos de la red de citas (Cora, Citeseer o Pubmed). Los conjuntos de datos originales se pueden encontrar aquí: http://www.cs.umd.edu/~sen/lbc-proj/LBC.html. En nuestra versión (ver data
carpeta) utilizamos divisiones de conjuntos de datos proporcionados por https://github.com/kimiyoung/planetoid (Zhilin Yang, William W. Cohen, Ruslan Salakhutdinov, Revisiting Semi-Supervised Learning with Graph Embeddings, ICML 2016).
Puede especificar un conjunto de datos de la siguiente manera:
python train.py --dataset citeseer
(o editando train.py
)
Modelos
Puedes elegir entre los siguientes modelos:
gcn
: Red convolucional de gráficos (Thomas N. Kipf, Max Welling, Clasificación semisupervisada con redes convolucionales de gráficos, 2016)gcn_cheby
: versión polinomial de Chebyshev de la red convolucional de grafos como se describe en (Michaël Defferrard, Xavier Bresson, Pierre Vandergheynst, Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering, NIPS 2016)dense
: perceptrón multicapa básico que admite entradas escasas
Clasificación de gráficos
Nuestro marco también admite la clasificación por lotes de múltiples instancias de gráficos (de tamaño potencialmente diferente) con una matriz de adyacencia cada una. Lo mejor es concatenar matrices de características respectivas y construir una matriz diagonal de bloques (escasa) donde cada bloque corresponde a la matriz de adyacencia de una instancia de gráfico. Para la agrupación (en el caso de salidas a nivel de gráfico en lugar de salidas a nivel de nodo), es mejor especificar una matriz de agrupación simple que recopile características de sus respectivas instancias de gráfico, como se ilustra a continuación:
Citar
Cite nuestro artículo si utiliza este código en su propio trabajo:
@inproceedings{kipf2017semi,
title={Semi-Supervised Classification with Graph Convolutional Networks},
author={Kipf, Thomas N. and Welling, Max},
booktitle={International Conference on Learning Representations (ICLR)},
year={2017}
}
Idiomas
-
Pitón
100,0%