GDC

class dgl.transforms.GDC(coefs, eweight_name='w', eps=None, avg_degree=5)[源码]

基类: BaseTransform

应用图扩散卷积 (GDC) 到输入图,如 Diffusion Improves Graph Learning 中介绍的。

扩散后将对加权邻接矩阵进行稀疏化。具体来说,权重低于阈值的边将被丢弃。

此模块仅适用于同构图。

参数:
  • coefs (list[float], optional) – 系数列表。邻接矩阵每个幂次的 \(\theta_k\)

  • eweight_name (str, optional) – 用于检索和存储边权重的 edata 名称。如果输入图中不存在,此模块将为所有边初始化权重为 1。边权重应为形状为 \((E)\) 的张量,其中 E 是边的数量。

  • eps (float, optional) – 扩散后稀疏化中保留边的阈值。权重小于 eps 的边将被丢弃。

  • avg_degree (int, optional) – 结果图的期望平均节点度数。这是控制结果图稀疏性的另一种方法,仅在未提供 eps 时有效。

示例

>>> import dgl
>>> import torch
>>> from dgl import GDC
>>> transform = GDC([0.3, 0.2, 0.1], avg_degree=2)
>>> g = dgl.graph(([0, 1, 2, 3, 4], [2, 3, 4, 5, 3]))
>>> g.edata['w'] = torch.tensor([0.1, 0.2, 0.3, 0.4, 0.5])
>>> new_g = transform(g)
>>> print(new_g.edata['w'])
tensor([0.3000, 0.3000, 0.0200, 0.3000, 0.0400, 0.3000, 0.1000, 0.0600, 0.3000,
        0.0800, 0.0200, 0.3000])