heterogeneous graph转homogeneous
- 异构图创建教程
- dgl.to_homogeneous语法格式
- 例子
异构图创建教程
对于异构图创建,可以看异构图创建教程
dgl.to_homogeneous语法格式
dgl.to_homogeneous(G, ndata=None, edata=None, store_type=True, return_count=False)
- G:传入的异构图
- ndata (可选):组合所有节点特征,行为节点数,列为特征维度。例如 ndata=[‘h’],则将组合后的所有节点特征赋给ndata[‘h’]。因此,所有节点类型的特征必须具有相同的形状和数据类型。默认情况下,返回的图将不包含任何节点特征。
- edata(可选):和ndata同理
- store_type (可选):如果为 True,则在返回的图中存储类型信息,作为 dgl.NTYPE 和 dgl.ETYPE 特征。默认为True
- return_count (可选):如果为 True,则返回类型信息,作为整数列表;第 i 个元素对应第 i 种类型的节点/边的数量。默认为False
例子
import dgl
import torch
hg = dgl.heterograph({
('user', 'follows', 'user'): ([0, 1], [1, 2]),
('developer', 'develops', 'game'): ([0, 1], [0, 1])
})
hg.nodes['user'].data['h'] = torch.ones(3, 1)
hg.nodes['developer'].data['h'] = torch.zeros(2, 1)
hg.nodes['game'].data['h'] = torch.ones(2, 1)
g = dgl.to_homogeneous(hg)
# The first three nodes are for 'user', the next two are for 'developer',
# and the last two are for 'game'
print(f'节点信息为:{g.ndata}')
print('--------------------')
# The first two edges are for 'follows', and the next two are for 'develops' edges.
print(f'边信息为:{g.edata}')
print('--------------------')
g = dgl.to_homogeneous(hg, ndata=['h'])
print(f"节点特征为:{g.ndata['h']}")
结果如下:
对于节点特征,可以看到矩阵的行为节点数,列为特征维度