Ini adalah implementasi TensorFlow dari jaringan konvolusional grafik untuk tugas (semi-diawasi) klasifikasi node dalam grafik, seperti yang dijelaskan dalam makalah kami:
Thomas N. KIPF, Max Welling, Klasifikasi Semi-Diawasi dengan Grafik Convolutional Networks (ICLR 2017)
Untuk penjelasan tingkat tinggi, lihat posting blog kami:
Thomas KIPF, Grafik Convolutional Networks (2016)
python setup.py install
cd gcn
python train.py
Untuk menggunakan data Anda sendiri, Anda harus menyediakan
Lihatlah fungsi load_data()
di utils.py
untuk contoh.
Dalam contoh ini, kami memuat data jaringan kutipan (CORA, Citeseer atau PubMed). Dataset asli dapat ditemukan di sini: http://www.cs.umd.edu/~sen/lbc-proj/lbc.html. Dalam versi kami (lihat folder data
) kami menggunakan pemisahan dataset yang disediakan oleh https://github.com/kimiyoung/planetoid (Zhilin Yang, William W. Cohen, Ruslan Salakhutdinov, meninjau kembali pembelajaran semi-supervised dengan embedding grafik, ICML 2016).
Anda dapat menentukan dataset sebagai berikut:
python train.py --dataset citeseer
(atau dengan mengedit train.py
)
Anda dapat memilih antara model berikut:
gcn
: Jaringan Konvolusi Grafik (Thomas N. KIPF, Max Welling, Klasifikasi Semi-Diawasi dengan Grafik Convolutional Networks, 2016)gcn_cheby
: Versi polinomial Chebyshev dari grafik jaringan konvolusional seperti yang dijelaskan dalam (Michaël Defferrard, Xavier Bresson, Pierre Vandergheynst, jaringan saraf konvolusional pada grafik dengan penyaringan spektral terlokalisasi cepat, NIPS 2016)dense
: Perceptron multi-lapisan dasar yang mendukung input yang jarang Kerangka kerja kami juga mendukung klasifikasi batch-wise dari beberapa instance grafik (ukuran yang berpotensi berbeda) dengan masing-masing matriks adjacency. Yang terbaik adalah menggabungkan matriks fitur masing-masing dan membangun matriks diagonal blok (jarang) di mana setiap blok sesuai dengan matriks kedekatan dari satu instance grafik. Untuk pengumpulan (dalam hal output tingkat grafik yang bertentangan dengan output tingkat simpul), yang terbaik adalah menentukan matriks kumpulan sederhana yang mengumpulkan fitur dari instance grafik masing-masing, seperti yang diilustrasikan di bawah ini:
Harap kutip makalah kami jika Anda menggunakan kode ini dalam pekerjaan Anda sendiri:
@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}
}