[WSDM 2019] SimGNN: A Neural Network Approach to Fast Graph Similarity Computation
本实现完全按照SimGNN论文实验部分设置
中文版 | English
SimGNN/
├── datasets/ # 存放数据集文件
│ ├── AIDS700nef/
│ ├── ALKANE/
│ ├── IMDBMulti/
│ ├── ...(may be other datasets)
| └── LINUX/
├── imgs/ # 存放README中的图片等资源
├── Logs/ # 存放日志文件
├── model/ # 模型代码
│ ├── layers.py # 包含Att模块,NTN模块
│ ├── SimGNN.py # SimGNN模型部分
| └── Trainer.py # 训练、验证和测试模块
├── utils/
│ ├── config.py # 系统级参数,例如数据集名称等
│ ├── config.yml # 模型级、数据集级参数,例如训练epochs,patience,num_features等
| └── utils.py # 工具,包含加载数据集,加载配置等
└── main.py
需要下载datasets,包含
AIDS700nef
,LINUX
,IMDBMulti
,ALKANE
数据集
将下载的
datasets.tar.gz
压缩文件移动到SimGNN
目录下解压缩:
tar -xvzf datasets.tar.gz
解压缩完成后进入
datasets/
目录,使用相同的命令再次解压缩四个数据集即可P.s: 实际上,如果你不下载我提供的数据集,也可以直接在
SimGNN/
项目根目录下创建datasets/
目录,此时GEDDataset
函数会自动下载数据集。
pyyaml == 6.0.1
wandb == 0.16.2
python == 3.9
numpy == 1.26
scipy == 1.11
tqdm == 4.66.1
texttable == 1.7
torch == 2.1.0
torch-geometric == 2.4.0
# AIDS700nef
python main.py
# LINUX
python main.py --dataset LINUX
# IMDBMulti
python main.py --dataset IMDBMulti
# ALKANE
python main.py --dataset ALKANE
datasets | MSE( |
||||
---|---|---|---|---|---|
AIDS700nef | 1.189 | 0.843 | 0.690 | 0.421 | 0.514 |
LINUX | 1.509 | 0.939 | 0.830 | 0.942 | 0.933 |
IMDBMulti | 1.264 | 0.878 | 0.770 | 0.759 | 0.777 |
遗憾的是,AIDS700nef
数据集上的结果丢失了wandb
的日志记录,所以少了每代的损失以及patience
记录。
LINUX
的结果看上去比原文更好。由于LINUX
数据集没有label
,所以本实现直接使用度的onehot
编码作为节点的输入特征。
与LINUX
相同,IMDBMulti
的结果比原文更好,IMDBMulti
同样直接使用度的onehot
编码作为节点的输入特征。
- 可惜的是,这个数据集结果不太正常。
- 不过SimGNN原文中也并没有涉及到这个数据集,因此我也没有仔细研究原因。
- 有兴趣的话可以继续研究问题所在。
如果你喜欢这个的项目的话,请给我们Stars ~