dgl.DGLGraph.incidence_matrix

DGLGraph.incidence_matrix(typestr, ctx=device(type='cpu'), etype=None)

返回给定边类型的关联矩阵表示。

关联矩阵是一个 n-by-m 的稀疏矩阵,其中 n 是节点数,m 是边数。每个非零值表示该边是否与该节点关联。

关联矩阵 \(I\) 有三种类型:

  • in (入边):

    • 如果 \(e\)\(v\) 的入边(或 \(v\)\(e\) 的目标节点),则 \(I[v, e] = 1\)

    • 否则 \(I[v, e] = 0\)

  • out (出边):

    • 如果 \(e\)\(v\) 的出边(或 \(v\)\(e\) 的源节点),则 \(I[v, e] = 1\)

    • 否则 \(I[v, e] = 0\)

  • both (仅当源节点和目标节点类型相同时)

    • 如果 \(e\)\(v\) 的入边,则 \(I[v, e] = 1\)

    • 如果 \(e\)\(v\) 的出边,则 \(I[v, e] = -1\)

    • 否则(包括自环) \(I[v, e] = 0\)

参数:
  • typestr (str) – 可以是 inoutboth

  • ctx (context, 可选) – 返回的关联矩阵的上下文。(默认值:cpu)

  • etype (str(str, str, str), 可选) –

    边的类型名称。允许的类型名称格式为

    • (str, str, str),分别表示源节点类型、边类型和目标节点类型。

    • 或者一个 str 边类型名称,如果该名称可以在图中唯一标识一个三元组格式。

    如果图只有一种边类型,则可以省略此参数。

返回值:

关联矩阵。

返回值类型:

框架 SparseTensor

示例

以下示例使用 PyTorch 后端。

>>> import dgl
>>> g = dgl.graph(([0, 1], [0, 2]))
>>> g.inc('in')
tensor(indices=tensor([[0, 2],
                       [0, 1]]),
       values=tensor([1., 1.]),
       size=(3, 2), nnz=2, layout=torch.sparse_coo)
>>> g.inc('out')
tensor(indices=tensor([[0, 1],
                       [0, 1]]),
       values=tensor([1., 1.]),
       size=(3, 2), nnz=2, layout=torch.sparse_coo)
>>> g.inc('both')
tensor(indices=tensor([[1, 2],
                       [1, 1]]),
       values=tensor([-1.,  1.]),
       size=(3, 2), nnz=2, layout=torch.sparse_coo)