GNN github代码核心解析 & Trick

文章目录

  • 原版GCN
  • 原版GAT
  • myGAT
  • DPGN: Distribution Propagation Graph Network for Few-shot Learning

原版GCN

  • full-batch

  • transductive learning: 训练阶段与测试阶段都基于同样的图结构(不能改变邻接矩阵adj)

  • 需要完整图结构

  • 资料:

    • https://github.com/tkipf/gcn/issues

原版GAT

  • full-batch

  • 对相邻节点的注意力(权重W)不同

  • Inductive learning

    • Global graph attention: 丢掉图结构效果差
    • Mask graph attention
  • 参考资料:

    • https://zhuanlan.zhihu.com/p/81350196?utm_source=wechat_session
    • https://blog.csdn.net/weixin_36474809/article/details/89401552
    • https://github.com/PetarV-/GAT

myGAT

  • Inductive learning::训练阶段与测试阶段需要处理的graph不同。通常是训练阶段只是在子图(subgraph)上进行,测试阶段需要处理未知的顶点。(unseen node): training的时候不需要val\test的图结构(邻接矩阵adj)

    • 在处理数据时分别保存train_index\val_index\test_index,实现数据集的分割。并为后续邻接矩阵adj的分割提供了依据
  • 通过from torch.utils.data import DataLoader实现batch操作(尤其是实现了邻接矩阵adj的三维)

    • 每一个batch下:通过BFS-sample,对当前节点进行bfs,找到相邻的所有节点,再递进到下一层。
    • 同一个batch下的节点有相同的label
  • accuracy计算: 每个batch选择1个节点作为valid与label进行计算

DPGN: Distribution Propagation Graph Network for Few-shot Learning

  • 使用from collections import OrderedDict 存储参数
config = OrderedDict()

config['dataset_name'] = 'mini-imagenet'
config['num_generation'] = 6
config['emb_size'] = 128
config['backbone'] = 'resnet12'
...
config['train_config'] = train_opt
config['eval_config'] = eval_opt

你可能感兴趣的:(Trick,Model,代码解析,Trick,GNN)