캡슐 그래프 신경망 의 Pytorch 구현 (ICLR 2019).

그래프 신경망 (GNN)에서 배운 고품질 노드 임베딩은 광범위한 노드 기반 애플리케이션에 적용되었으며 일부는 최첨단 (SOTA) 성능을 달성했습니다. 그러나, 그래프 임베딩을 생성하기 위해 GNN에서 배운 노드 임베딩을 적용 할 때, 스칼라 노드 표현은 노드/그래프 속성을 효율적으로 보존하기에 충분하지 않아서 최적의 그래프 임베딩을 초래할 수 있습니다. CAPSNET (Capsule Neural Network)에서 영감을 얻은 우리는 기존 GNN 기반 그래프 임베드 알고리즘의 약점을 해결하기 위해 캡슐 개념을 채택하는 캡슐 그래프 신경망 (CAPSGNN)을 제안합니다. 캡슐 형태로 노드 기능을 추출함으로써 라우팅 메커니즘을 사용하여 그래프 수준에서 중요한 정보를 캡처 할 수 있습니다. 결과적으로, 우리의 모델은 각각의 그래프에 대한 여러 임베딩을 생성하여 다른 측면에서 그래프 속성을 캡처합니다. CAPSGNN에 통합 된주의 모듈은 다양한 크기의 그래프를 다루는 데 사용되므로 모델이 그래프의 중요한 부분에 집중할 수 있습니다. 10 개의 그래프 구조화 된 데이터 세트를 이용한 광범위한 평가는 CAPSGNN이 데이터 중심으로 전체 그래프의 거시적 특성을 캡처하는 데 작동하는 강력한 메커니즘을 가지고 있음을 보여줍니다. 새로운 악기 덕분에 여러 그래프 분류 작업에 대한 다른 SOTA 기술보다 성능이 우수합니다.
이 저장소는 논문에 설명 된대로 Capsgnn의 Pytorch 구현을 제공합니다.
캡슐 그래프 신경망. Zhang Xinyi, Lihui Chen. ICLR, 2019. [종이]
적응 된 Core Capsule Neural Network 구현을 사용할 수 있습니다.
코드베이스는 Python 3.5.2에서 구현됩니다. 개발에 사용되는 패키지 버전은 바로 아래에 있습니다.
networkx 2.4
tqdm 4.28.1
numpy 1.15.4
pandas 0.23.4
texttable 1.5.0
scipy 1.1.0
argparse 1.1.0
torch 1.1.0
torch-scatter 1.4.0
torch-sparse 0.4.3
torch-cluster 1.4.5
torch-geometric 1.3.2
torchvision 0.3.0
코드는 각 그래프가 JSON으로 저장되는 입력 폴더에서 교육을위한 그래프를 가져옵니다. 테스트에 사용되는 그래프도 JSON 파일로 저장됩니다. 모든 노드 ID와 노드 레이블은 0에서 인덱싱되어야합니다. 사전 키는 JSON 직렬화를 가능하게하기 위해 문자열이 저장됩니다.
모든 JSON 파일에는 다음과 같은 키 값 구조가 있습니다.
{ "edges" : [ [ 0 , 1 ] , [ 1 , 2 ] , [ 2 , 3 ] , [ 3 , 4 ] ] ,
"labels" : { "0" : "A" , "1" : "B" , "2" : "C" , "3" : "A" , "4" : "B" } ,
"target" : 1 }** 가장자리 ** 키에는 연결 구조를 결정하는 가장자리 목록 값이 있습니다. ** 레이블 ** 키에는 사전으로 저장된 각 노드에 대한 레이블이 있습니다. ** target ** 키에는 클래스 멤버십 인 정수 값이 있습니다.
예측은`output/`디렉토리에 저장됩니다. 각 임베딩에는 헤더와 그래프 식별자가있는 열이 있습니다. 마지막으로, 예측은 식별자 열에 의해 정렬됩니다.
Capsgnn 모델 훈련은 다음 명령 줄 인수를 제공하는`src/main.py` 스크립트에 의해 처리됩니다.
--training-graphs STR Training graphs folder. Default is `input/train/`.
--testing-graphs STR Testing graphs folder. Default is `input/test/`.
--prediction-path STR Output predictions file. Default is `output/watts_predictions.csv`.
--epochs INT Number of epochs. Default is 100.
--batch-size INT Number fo graphs per batch. Default is 32.
--gcn-filters INT Number of filters in GCNs. Default is 20.
--gcn-layers INT Number of GCNs chained together. Default is 2.
--inner-attention-dimension INT Number of neurons in attention. Default is 20.
--capsule-dimensions INT Number of capsule neurons. Default is 8.
--number-of-capsules INT Number of capsules in layer. Default is 8.
--weight-decay FLOAT Weight decay of Adam. Defatuls is 10^-6.
--lambd FLOAT Regularization parameter. Default is 0.5.
--theta FLOAT Reconstruction loss weight. Default is 0.1.
--learning-rate FLOAT Adam learning rate. Default is 0.01.
다음 명령은 모델을 배우고 예측을 저장합니다. 기본 데이터 세트에 대한 모델 교육 :
$ python src/main.py
100 에코에 대한 Capsgnnn 모델 교육.
$ python src/main.py --epochs 100배치 크기 변경.
$ python src/main.py --batch-size 128특허