これは、私たちの論文で説明されているように、グラフ内のノードの(半監視)分類のタスクのためのグラフ畳み込みネットワークのテンソルフロー実装です。
Thomas N. Kipf、Max Welling、Graph Convolution Networksを使用した半監視分類(ICLR 2017)
高レベルの説明については、ブログ投稿をご覧ください。
Thomas KIPF、グラフ畳み込みネットワーク(2016)
python setup.py install cd gcn
python train.py独自のデータを使用するには、提供する必要があります
例として、 utils.pyのload_data()関数をご覧ください。
この例では、引用ネットワークデータ(Cora、Citeseer、またはPubMed)をロードします。元のデータセットは、http://www.cs.umd.edu/~sen/lbc-proj/lbc.htmlにあります。バージョン( dataフォルダーを参照)では、https://github.com/kimiyoung/planetoid(Zhilin Yang、William W. Cohen、Ruslan Salakhutdinovが提供するデータセットスプリットを使用します。
次のようにデータセットを指定できます。
python train.py --dataset citeseer (またはtrain.pyを編集することで)
次のモデルから選択できます。
gcn :グラフ畳み込みネットワーク(Thomas N. KIPF、Max Welling、Graph Convolution Networksを使用した半監視分類、2016年)gcn_cheby :Chebyshev Polynomialバージョングラフ畳み込みネットワークのバージョン(MichaëlDefferrard、Xavier Bresson、Pierre Vandergheynst、高速局在スペクトルフィルタリング付きグラフ上の畳み込みニューラルネットワーク、NIPS 2016)dense :まばらな入力をサポートする基本的な多層パーセプトロン私たちのフレームワークは、それぞれ隣接するマトリックスを使用して(潜在的に異なるサイズの)複数のグラフインスタンスのバッチごとの分類もサポートしています。それぞれの特徴マトリックスを連結し、各ブロックが1つのグラフインスタンスの隣接マトリックスに対応する(スパース)ブロック対角マトリックスを構築することをお勧めします。プーリングの場合(ノードレベルの出力とは対照的にグラフレベルの出力の場合)、以下に示すように、それぞれのグラフインスタンスから機能を収集する単純なプーリングマトリックスを指定することをお勧めします。

あなたがあなた自身の仕事でこのコードを使用している場合、私たちの論文を引用してください:
@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}
}