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]])