Skip to content

一个遵循了官方设置的PyTorch版本的SimGNN。A PyTorch implement of SimGNN, which follows the official-setting

License

Notifications You must be signed in to change notification settings

Sangs3112/SimGNN

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

[WSDM 2019] SimGNN: A Neural Network Approach to Fast Graph Similarity Computation

本实现完全按照SimGNN论文实验部分设置

GitHub License PyPI - Version

中文版 | 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,包含AIDS700nefLINUXIMDBMultiALKANE数据集

  1. 将下载的datasets.tar.gz压缩文件移动到SimGNN目录下

  2. 解压缩: tar -xvzf datasets.tar.gz

  3. 解压缩完成后进入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

run

# AIDS700nef
python main.py
# LINUX
python main.py --dataset LINUX
# IMDBMulti
python main.py --dataset IMDBMulti
# ALKANE
python main.py --dataset ALKANE

原文结果

datasets MSE($10^{-3}$) $\rho$ $\tau$ $p@10$ $p@20$
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

遗憾的是,AIDS700nef数据集上的结果丢失了wandb的日志记录,所以少了每代的损失以及patience记录。

AIDS700nef_result_1

AIDS700nef_result_2

LINUX

LINUX的结果看上去比原文更好。由于LINUX数据集没有label,所以本实现直接使用度的onehot编码作为节点的输入特征。 LINUX_result

  • 训练损失记录

  • 验证损失记录

  • 每代patience变化,耐心值设置为30。

IMDBMulti

LINUX相同,IMDBMulti的结果比原文更好,IMDBMulti同样直接使用度的onehot编码作为节点的输入特征。 IMDBMulti_result

  • 训练损失记录

  • 验证损失记录

ALKANE

  • 可惜的是,这个数据集结果不太正常。
  • 不过SimGNN原文中也并没有涉及到这个数据集,因此我也没有仔细研究原因。
  • 有兴趣的话可以继续研究问题所在。

如果你喜欢这个的项目的话,请给我们Stars ~

About

一个遵循了官方设置的PyTorch版本的SimGNN。A PyTorch implement of SimGNN, which follows the official-setting

Topics

Resources

License

Stars

Watchers

Forks

Languages