AddMetaPaths
- class dgl.transforms.AddMetaPaths(metapaths, keep_orig_edges=True)[source]
-
根据给定的元路径向输入图添加新的边,如Heterogeneous Graph Attention Network中所述。
形式上,元路径是一种形如
\[\mathcal{V}_1 \xrightarrow{R_1} \mathcal{V}_2 \xrightarrow{R_2} \ldots \xrightarrow{R_{\ell-1}} \mathcal{V}_{\ell}\]其中 \(\mathcal{V}_i\) 表示节点类型,\(\xrightarrow{R_j}\) 表示连接其两个相邻节点类型的关系类型。对应于元路径的邻接矩阵是通过沿元路径的邻接矩阵的顺序乘法获得的。
- 参数:
示例
>>> import dgl >>> from dgl import AddMetaPaths
>>> transform = AddMetaPaths({ ... 'accepted': [('person', 'author', 'paper'), ('paper', 'accepted', 'venue')], ... 'rejected': [('person', 'author', 'paper'), ('paper', 'rejected', 'venue')] ... }) >>> g = dgl.heterograph({ ... ('person', 'author', 'paper'): ([0, 0, 1], [1, 2, 2]), ... ('paper', 'accepted', 'venue'): ([1], [0]), ... ('paper', 'rejected', 'venue'): ([2], [1]) ... }) >>> new_g = transform(g) >>> print(new_g.edges(etype=('person', 'accepted', 'venue'))) (tensor([0]), tensor([0])) >>> print(new_g.edges(etype=('person', 'rejected', 'venue'))) (tensor([0, 1]), tensor([1, 1]))