-
Notifications
You must be signed in to change notification settings - Fork 77
论文复现指南 GNN in GammaGL
Guangyu Zhou edited this page May 6, 2024
·
2 revisions
- 第一周 了解TensorlayerX
- 了解框架 TensorLayerX(只需要了解基本的即可,无需知道每一个API作用)。重要API:
- API-Activations: ReLU(), Softmax()
- API-Metrics: 全部
- API-NN: Linear(), Dropout(), Reshape(), Concat(), Transpose()
- API-Model Training: WithLoss(), TrainOneStep()
- API-Initializers: Zeros(), Ones(), Constant(), RandomNormal(), XavierNormal()(注意:RandomUniform()有bug,非必要,不要使用)
- API-Operations: get_tensor_shape(), zeros(), ones(), random_normal(), xavier_normal(), abs(), argmax(), ceil(), cumsum(), exp(), l2_normalize(), multiply(), reshape(), concat(), convert_to_tensor(), convert_to_numpy(), reduce_XXX(), logical_XXX(), matmul(), stack(), expand_dims(), gather(), tensor_scatter_nd_update(), scatter_update(), diag(), mask_select(), set_device(), to_device()
- API-Optimizers: Adam(), SGD()
- 了解框架 TensorLayerX(只需要了解基本的即可,无需知道每一个API作用)。重要API:
- 第二周 阅读论文及源码
- 阅读论文,了解论文的大致内容(摘要、背景、拟解决的问题和大致思路等)。
- 对照论文的源代码,将论文的公式和代码的内容对应。
- 汇报内容主要包含Preliminary、Related work、Motivation、Method、Experiment;
- 能够根据模型架构图,描述模型的处理过程;
- 汇报时间不要超过半个小时。
- 准备论文汇报PPT。
- 第三周 了解GammaGL
- 安装GammaGL:参考主页,或文档。
- 数据集集成:
- 了解GammaGL集成数据集方法,参考plaintoid数据集。
- 卷积层
gammagl/layers/conv
的实现:- 了解MessgaePassing类:
- message: 消息发送函数,执行根据edge_index和edge_weight将x中的消息发送到边上的操作。通常需要在继承类中重写,以实现不同的实例。
- aggregate: 消息传播函数,执行根据edge_index将msg中包含的消息聚合到目标节点上的操作。可以需根据需要设置aggr_type [sum(default), mean, max, min],也可以根据需要重写。
- update: 消息更新函数,该函数通常在需要残差链接等特殊更新方式时候使用,也可以不使用该函数直接在forward过程中实现。
- propagate: 描述的消息传播过程,上述函数会被依次执行。 注意:消息传播过程在概念上来讲不包含神经网络中的参数,有关线性变换的部分计算一般在forward中执行。
- 了解卷积类实现,参考GCNConv,GATConv。
- 了解MessgaePassing类:
- 模型的实现:
- 了解GammaGL模型实现,可对比DGL、PyG对应模型的实现,参考GCNModel。
- 训练流程:
- 了解GammaGL训练流程,参考gcn_trainer。
- 后续
- 根据论文和源代码,在GammaGL上使用TensorLayerX进行模型复现;
- 运行实验,要求模型的性能基本达到论文性能;
- 撰写模型文档,包括README文档和docstring文档;
- 常见问题,可以参考常见问题文档。
- 首先,需要安装make指令,可参考官网,名称为MinGW;
- 下载安装之后,需添加环境变量,将/{你的安装目录}/MinGW/bin添加到环境变量中(将mingw32-make.exe更名为make.exe方便一些);
- 将算法库clone到本地;
- 根据安装教程,安装算法库以及相应的依赖;
- 进入docs文件夹下,
cd docs
; - 运行
pip install -r requirements.txt
,安装文档库的相关依赖; - 运行
sh build.sh
; - 正常可以在http://127.0.0.1:8000/上查看自己的文档结果。
在负责人同意的情况下,便可在github上提交pull request (pr),详细如下:
- step 1:提交模型之前通过命令更新tensorlayerx和gammagl的代码,测试通过之后提交pr;
- step 2:建议使用可视化软件使用git,如sourcetree,github desktop,vscode插件等,有关git的原理和操作参考官方文档;
- step 3:fork 本项目到自己的账号下面;
- step 4:克隆你账号下面的项目,e.g.
git clone github.com/dddg617/GammaGL
; - step 5:在本地新建分支,如
gcn
,命令为git checkout -b gcn
;- 注意:不建议将代码提交到自己仓库的main分支,因为合并代码之后,无法再用此分支提交代码。
- step 6:编写代码,并向新建分支提交commit,参考命令:
-
git status
: 查看仓库修改情况。 -
git add XXX
: 添加要修改的文件。 -
git commit -m "XXX"
:提交文件,附上提交说明。
-
- step 7:把更改的代码push到自己仓库,自己建立的分支下,e.g.
git push origin gcn
; - step 8:在github上提交pr到BUPT-GAMMA/GammaGL的main分支;
- step 9:根据负责人以及comment的意见,修改代码;
- 注意:修改代码只需要在自己仓库的分支上commit、push(即重复step 6-step 7)即可,无需关闭pr再重新打开。
- step 10:项目管理人员合并代码。