DGL创建异质图:
import dgl
import torch
data_dict = {
('user', 'follows', 'user'): (torch.tensor([0, 1]), torch.tensor([1, 2])),
('user', 'follows', 'topic'): (torch.tensor([1, 1]), torch.tensor([1, 2])),
('user', 'plays', 'game'): (torch.tensor([0, 3]), torch.tensor([3, 4]))
}
g = dgl.heterograph(data_dict)
>>> g
Graph(num_nodes={'game': 5, 'topic': 3, 'user': 4},
num_edges={('user', 'follows', 'user'): 2, ('user', 'follows', 'topic'): 2,
('user', 'plays', 'game'): 2},
metagraph=[('user', 'user', 'follows'), ('user', 'topic', 'follows'),
('user', 'game', 'plays')])
解释一下data_dict中tensor的含义,第一个tensor代表源节点ID,第二个tensor代表目标节点ID
示例:
('user', 'plays', 'game'): (torch.tensor([0, 3]), torch.tensor([3, 4]))
表示user节点有节点‘0’和节点‘3’,game节点有节点‘3’和节点‘4’
在图中,节点的数目是由创建时的最大节点ID决定的,例如game节点出现的最大值是4,所以就有5个节点,user节点出现的最大值是3,所以有4个节点。
网友评论