DGL創(chuàng)建異質(zhì)圖:
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代表源節(jié)點ID,第二個tensor代表目標(biāo)節(jié)點ID
示例:
('user', 'plays', 'game'): (torch.tensor([0, 3]), torch.tensor([3, 4]))
表示user節(jié)點有節(jié)點‘0’和節(jié)點‘3’,game節(jié)點有節(jié)點‘3’和節(jié)點‘4’
在圖中,節(jié)點的數(shù)目是由創(chuàng)建時的最大節(jié)點ID決定的,例如game節(jié)點出現(xiàn)的最大值是4,所以就有5個節(jié)點,user節(jié)點出現(xiàn)的最大值是3,所以有4個節(jié)點。