TWIRLS展开与注意力机制

class dgl.nn.pytorch.conv.TWIRLSUnfoldingAndAttention(d, alp, lam, prop_step, attn_aft=-1, tau=0.2, T=-1, p=1, use_eta=False, init_att=False, attn_dropout=0, precond=True)[source]

Bases: Module

Description

将传播和注意力结合起来。

param d:

图形特征的大小。

type d:

int

param alp:

步长大小。论文中的\(\alpha\)

type alp:

float

param lam:

图平滑项的系数。在论文中表示为\(\lambda\)

type lam:

int

param prop_step:

传播步骤的数量

type prop_step:

int

param attn_aft:

注意力层放置的位置。即在注意力之前的传播步骤数。 如果设置为-1,则没有注意力。

type attn_aft:

int

param tau:

下阈值参数。对应于论文中的\(\tau\)

type tau:

float

param T:

上限阈值参数。对应于论文中的\(T\)

type T:

float

param p:

对应于论文中的\(\rho\)

type p:

float

param use_eta:

如果True,在进行注意力时学习每个维度的权重向量。

type use_eta:

bool

param init_att:

如果 True,在传播之前添加一个额外的注意力层。

type init_att:

bool

param attn_dropout:

注意力值的丢弃率。默认值:0.0

type attn_dropout:

float

param precond:

如果 True,使用预条件和重新参数化的版本传播(公式28),否则使用归一化的拉普拉斯(公式30)。

type precond:

bool

示例

>>> import dgl
>>> from dgl.nn import TWIRLSUnfoldingAndAttention
>>> import torch as th
>>> g = dgl.graph(([0, 1, 2, 3, 2, 5], [1, 2, 3, 4, 0, 3])).add_self_loop()
>>> feat = th.ones(6,5)
>>> prop = TWIRLSUnfoldingAndAttention(10, 1, 1, prop_step=3)
>>> res = prop(g,feat)
>>> res
tensor([[2.5000, 2.5000, 2.5000, 2.5000, 2.5000],
        [2.5000, 2.5000, 2.5000, 2.5000, 2.5000],
        [2.5000, 2.5000, 2.5000, 2.5000, 2.5000],
        [3.7656, 3.7656, 3.7656, 3.7656, 3.7656],
        [2.5217, 2.5217, 2.5217, 2.5217, 2.5217],
        [4.0000, 4.0000, 4.0000, 4.0000, 4.0000]])
forward(g, X)[source]

Description

计算传播和注意力的前向传递。

param g:

图表。

type g:

DGLGraph

param X:

初始化功能。

type X:

torch.Tensor

returns:

图表。

rtype:

torch.Tensor