PyTorch实现的“MixHop

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

本文分享自微信公众号 - 相约机器人(xiangyuejiqiren)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券