Dies ist eine Tensorflow-Implementierung von Graph-Faltungsnetzwerken für die Aufgabe der (semi-subventionierten) Klassifizierung von Knoten in einem Diagramm, wie in unserem Artikel beschrieben:
Thomas N. Kipf, Max Welling, halbübergreifende Klassifizierung mit Graph-Faltungsnetzwerken (ICLR 2017)
Für eine hochrangige Erklärung schauen Sie sich unseren Blog-Beitrag an:
Thomas Kipf, Graph Faltungsnetzwerke (2016)
python setup.py install
cd gcn
python train.py
Um Ihre eigenen Daten zu verwenden, müssen Sie bereitstellen
Schauen Sie sich die Funktion load_data()
in utils.py
an.
In diesem Beispiel laden wir Zitiernetzwerkdaten (Cora, Citeseer oder PubMed). Die ursprünglichen Datensätze finden Sie hier: http://www.cs.umd.edu/~sen/lbc-proj/lbc.html. In unserer Version (siehe data
) verwenden wir Dataset-Splits von https://github.com/kimiyoung/Planetoid (Zhilin Yang, William W. Cohen, Ruslan Salakhutdinov, überprüfendes halbaufleitendes Lernen mit Graph-Einbindungen, ICML 2016).
Sie können wie folgt einen Datensatz angeben:
python train.py --dataset citeseer
(oder durch Bearbeiten von train.py
)
Sie können zwischen den folgenden Modellen wählen:
gcn
: Graph Faltungsnetzwerk (Thomas N. Kipf, Max Welling, Semi-Supervised-Klassifizierung mit Graph-Faltungsnetzwerken, 2016)gcn_cheby
: CHEBYSHEV POLYNOMIAL FISSION VON GRAPH FREVOLUTAL NETWORK, wie in (Michaël Defferrard, Xavier Bresson, Pierre Vandergheynst, Faltungsnetzwerke mit schnell lokalisierten Spektralfilter, NIPS 2016)dense
: Grundlegende Multi-Layer-Perzeptron, die spärliche Eingaben unterstützt Unser Framework unterstützt auch die stapelbezogene Klassifizierung mehrerer Diagramminstanzen (mit potenziell unterschiedlicher Größe) mit jeweils Adjazenzmatrix. Es ist am besten, die jeweiligen Merkmalsmatrizen zu verkettet und eine (spärliche) blockdiagonale Matrix zu erstellen, wobei jeder Block der Adjazenzmatrix einer Graphinstanz entspricht. Für das Pooling (im Falle von Ausgängen auf Grafikebene im Gegensatz zu Ausgängen auf Knotenebene) ist es am besten, eine einfache Pooling-Matrix anzugeben, die Funktionen aus ihren jeweiligen Graphinstanzen sammelt, wie unten dargestellt:
Bitte zitieren Sie unser Papier, wenn Sie diesen Code in Ihrer eigenen Arbeit verwenden:
@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}
}