Это тензорфлоу реализация графических сверточных сетей для задачи (полупрофильного) классификации узлов на графике, как описано в нашей статье:
Томас Н. Кипф, Макс Веллинг, Полуопервизированная классификация с графическими сверточными сетями (ICLR 2017)
Для объяснения высокого уровня посмотрите на наш пост в блоге:
Томас Кипф, Графические сверточные сети (2016)
python setup.py install
cd gcn
python train.py
Чтобы использовать свои собственные данные, вы должны предоставить
Посмотрите на функцию load_data()
в utils.py
для примера.
В этом примере мы загружаем данные сети цитирования (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, пересмотр полусреднего обучения с графическими вставками, ICML 2016).
Вы можете указать набор данных следующим образом:
python train.py --dataset citeseer
(или путем редактирования train.py
)
Вы можете выбрать между следующими моделями:
gcn
: Графическая сверточная сеть (Томас Н. Кипф, Макс Веллинг, Полуопроверленная классификация с графическими сверточными сетями, 2016)gcn_cheby
: Chebyshev Molynomial Version of Graph Convolutional Network, как описано в (Michaël Defferrard, Xavier Bresson, Pierre Vandergheynst, Коламенные нейронные сети на графиках с быстрой локализованной спектральной фильтрацией, NIPS 2016)dense
: базовый многослойный персептрон, который поддерживает редкие входы Наша структура также поддерживает пакетную классификацию нескольких экземпляров графика (потенциально различного размера) с матрицей смежности. Лучше всего объединить соответствующие матрицы функций и создать (редкую) блочную дидиагональную матрицу, где каждый блок соответствует матрице смежности одного экземпляра графика. Для объединения (в случае выходов на уровне графика, в отличие от выходов на уровне узлов) лучше всего указать простую матрицу пула, которая собирает функции из их соответствующих экземпляров графиков, как показано ниже:
Пожалуйста, цитируйте нашу статью, если вы используете этот код в своей собственной работе:
@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}
}