可以有节点特征,也可以有边特征。
节点特征,如node2vec,可以理解为[batch, feature]的dense矩阵
而边特征,可以理解为[batch, batch], (nnz =边的数量) 的sparse矩阵。sparse 中的values向量存的就是边特征的值。
另外,
对于加权图,用户可以将权重储存为一个边特征。
```
# 边 0->1, 0->2, 0->3, 1->3
>>> edges = th.tensor([0, 0, 0, 1]), th.tensor([1, 2, 3, 3])
>>> weights = th.tensor([0.1, 0.6, 0.9, 0.7]) # 每条边的权重
>>> g = dgl.graph(edges)
>>> g.edata[‘w‘] = weights # 将其命名为 ‘w‘
>>> g
Graph(num_nodes=4, num_edges=4,
ndata_schemes={}
edata_schemes={‘w‘ : Scheme(shape=(,), dtype=torch.float32)})
参考:
https://docs.dgl.ai/en/0.6.x/guide_cn/graph-feature.html