胶囊图神经网络的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执照