graphsage
- 对某个节点的邻居进行采样聚合,作为该节点的特征,来预测label
- 是 inductive 学习,不需要学习整个graph,学习聚合方式

- 学习公式如下,比较简单明了,如果边有权重,每个h聚合时可以乘以权重

代码实现
官方代码
- dgl代码写得非常好了,基本很容易理解, 主要在数据采样和模型输入输出做个记录
数据格式
# 1. 一般训练gnn,需要构建以下5个数据:
1. graph: 根据边构建的dgl graph
2. labels: 每个节点对应的label
3. train_idx: 训练数据对应的节点index
4. valid_idx: 验证数据对应的节点index
5. node_feat: 每个节点对应的特征向量
# 2. 用dgl的 sampler 和 dataloader, 实现节点采样
fanouts = [20, 20] # 每层每个节点采样数量
train_sampler = MultiLayerNeighborSampler(fanouts)
train_dataloader = NodeDataLoader(graph,
train_idx,
train_sampler,
device=device,
use_ddp=False,
batch_size=batch_size,
shuffle=True,