이것은 논문에 설명 된대로 그래프에서 노드의 (반 감독) 분류 작업을위한 그래프 컨볼 루션 네트워크의 텐서 플로 구현입니다.
Thomas N. KIPF, Max Welling, 그래프 컨볼 루션 네트워크를 통한 반 감독 분류 (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, ICML 2016)를 사용한 반 감독 학습을 다시 방문 함)에서 제공하는 데이터 세트 스플릿을 사용합니다.
다음과 같이 데이터 세트를 지정할 수 있습니다.
python train.py --dataset citeseer
(또는 train.py
편집하여)
다음 모델 중에서 선택할 수 있습니다.
gcn
: 그래프 컨볼 루션 네트워크 (Thomas N. KIPF, Max Welling, Graph Convolutional Networks를 통한 반 감독 분류, 2016)gcn_cheby
: Graph Convolutional Network의 Chebyshev 다항식 버전 (Michaël Defferrard, Xavier Bresson, Pierre Vandergheynst, 빠른 국소화 된 스펙트럼 필터링, Nips 2016이있는 그래프의 Convolutional Neural Networks에 설명되어 있습니다.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}
}