膠囊圖神經網絡的Pytorch實現(ICLR 2019)。

從圖形神經網絡(GNN)中學到的高質量節點嵌入已應用於廣泛的基於節點的應用程序,其中一些已實現了最先進的(SOTA)性能。但是,當應用從GNN中學到的節點嵌入以生成圖形嵌入時,標量節點表示不足以有效地保留節點/圖形屬性,從而導致次優的圖形嵌入。受膠囊神經網絡(CAPSNET)的啟發,我們提出了膠囊圖神經網絡(CAPSGNN),該網絡採用膠囊的概念來解決現有的基於GNN的基於GNN的圖形嵌入算法中的弱點。通過以膠囊形式提取節點特徵,可以利用路由機制在圖級別捕獲重要信息。結果,我們的模型為每個圖生成多個嵌入,以從不同方面捕獲圖形屬性。 CAPSGNN中包含的注意模塊用於處理各種尺寸的圖形,這也使模型可以專注於圖的關鍵部分。我們對10個圖形結構化數據集進行了廣泛的評估表明,CAPSGNN具有強大的機制,可以通過數據驅動來捕獲整個圖的宏觀特性。根據新儀器,它在幾個圖形分類任務上的其他SOTA技術優於其他SOTA技術。
該存儲庫提供了CAPSGNN的Pytorch實現,如本文所述:
膠囊圖神經網絡。 Zhang Xinyi,Lihui Chen。 ICLR,2019年。 [紙]
適用於[此處]的核心膠囊神經網絡實現。
代碼庫在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 }** edges **鍵具有一個邊緣列表值,該值降低了連接結構。 **標籤**鍵具有每個節點的標籤,該標籤被存儲為詞典 - 在此嵌套詞典標籤中是值,節點標識符是鍵。 ** target **密鑰具有整數值,即類成員資格。
預測保存在“輸出/”目錄中。每個嵌入都有一個帶有圖標識符的標題和列。最後,預測由標識符列對。
訓練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執照