https://github.com/benedekrozemberczki/MixHop-and-N-GCN
最近的方法通过近似图拉普拉斯算子的特征基,将来自欧几里德域的卷积层概括为图结构数据。计算效率和广泛使用的Kipf&Welling图形ConvNet过度简化了近似,有效地将图形卷积渲染为邻域平均算子。这种简化限制了模型学习delta运算符,这是图拉普拉斯算子的前提。在这项工作中,提出了一个新的图形卷积层,它混合了邻接矩阵的多个幂,允许它学习delta运算符。层显示与GCN相同的内存占用和计算复杂性。在合成图数据集和几个真实世界的引文图上说明了提出的图层的强度,
该存储库提供了MixHop和N-GCN的PyTorch实现,如文件中所述:
https://arxiv.org/pdf/1905.00067.pdf
http://sami.haija.org/papers/high-order-gc-layer.pdf
要求
代码库在Python 3.5.2中实现。用于开发的软件包版本如下。
数据集
代码获取csv文件中图形的边缘列表。每行表示由逗号分隔的两个节点之间的边。第一行是标题。节点应从0开始编制索引。目录中Cora包含 示例图表input/。除了edgelist之外,还有一个带有稀疏特征的JSON文件和一个带有目标变量的csv。
特征矩阵是稀疏二进制一它被存储为JSON。节点是json的键,特征索引是值。对于每个节点要素,列ID将存储为列表的元素。特征矩阵的结构如下:
所述目标矢量是具有两列和标头一个csv,第一包含节点标识符第二目标。此csv按节点标识符排序,目标列包含从零开始索引的类mebership。
节点ID目标
选项
训练N-GCN / MixHop模型由src/main.py脚本处理,该脚本提供以下命令行参数。
输入和输出选项
--edge-path STR Edge list csv. Default is `input/cora_edges.csv`. --features-path STR Features json. Default is `input/cora_features.json`. --target-path STR Target classes csv. Default is `input/cora_target.csv`.
型号选项
--model STR Model variant. Default is `mixhop`. --seed INT Random seed. Default is 42. --epochs INT Number of training epochs. Default is 2000. --early-stopping INT Early stopping rounds. Default is 10. --training-size INT Training set size. Default is 1500. --validation-size INT Validation set size. Default is 500. --learning-rate FLOAT Adam learning rate. Default is 0.01. --dropout FLOAT Dropout rate value. Default is 0.5. --lambd FLOAT Regularization coefficient. Default is 0.0001. --layers LST Layer sizes for model. Default is [64, 64, 64].
例子
以下命令学习神经网络并在测试集上进行评分。在默认数据集上训练模型。
python src/main.py
训练MixHop模型100个时代。
python src/main.py --epochs 100
提高学习率和辍学率。
python src/main.py --learning-rate 0.1 --dropout 0.9
使用扩散顺序2训练模型:
python src/main.py --layers 64 64
训练N-GCN模型:
python src/main.py --model ngcn