HeatKernel

class dgl.transforms.HeatKernel(t=2.0, eweight_name='w', eps=None, avg_degree=5)[source]

基类: BaseTransform

将热核应用于输入图进行扩散,如 图和其他离散结构上的扩散核 中所述。

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

此模块仅适用于同构图。

参数:
  • t (float, 可选) – 扩散时间,通常在 \([2, 10]\) 范围内。

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

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

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

示例

>>> import dgl
>>> import torch
>>> from dgl import HeatKernel
>>> transform = HeatKernel(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.1353, 0.1353, 0.1353, 0.0541, 0.0406, 0.1353, 0.1353, 0.0812, 0.1353,
        0.1083, 0.0541, 0.1353])