TWIRLSConv
- class dgl.nn.pytorch.conv.TWIRLSConv(input_d, output_d, hidden_d, prop_step, num_mlp_before=1, num_mlp_after=1, norm='none', precond=True, alp=0, lam=1, attention=False, tau=0.2, T=-1, p=1, use_eta=False, attn_bef=False, dropout=0.0, attn_dropout=0.0, inp_dropout=0.0)[source]
Bases:
Module
卷积与迭代重加权最小二乘法结合,来自 Graph Neural Networks Inspired by Classical Iterative Algorithms
- Parameters:
input_d (int) – 输入特征的数量。
output_d (int) – 输出特征的数量。
hidden_d (int) – 隐藏层的大小。
prop_step (int) – 传播步骤的数量
num_mlp_before (int) – 传播前的mlp层数。默认值:
1
。num_mlp_after (int) – 传播后的mlp层数。默认值:
1
。norm (str) – mlp层内部的归一化层类型。可以是
'batch'
,'layer'
或'none'
. 默认值:'none'
precond (str) – 如果为True,使用预处理和非归一化的拉普拉斯,否则不使用预处理并使用归一化的拉普拉斯。默认值:
True
alp (float) – 论文中的\(\alpha\)。如果等于\(0\),将根据其他超参数自动决定。默认值:
0
。lam (float) – 论文中的 \(\lambda\)。默认值:
1
。注意 (bool) – 如果为
True
,则在传播过程中添加一个注意力层。默认值:False
。tau (float) – 论文中的 \(\tau\)。默认值:
0.2
。T (float) – 论文中的\(T\)。如果小于0,\(T\)将被设置为infty。默认值:
-1
。p (float) – 论文中的\(p\)。默认值:
1
。use_eta (bool) – 如果为
True
,则在注意力机制的每个维度上添加一个可学习的权重。默认值为False
。attn_bef (bool) – 如果为
True
,在传播之前添加另一个注意力层。默认值:False
。dropout (float) – mlp层中的dropout率。默认值:
0.0
。attn_dropout (float) – 注意力值的丢弃率。默认值:
0.0
。inp_dropout (float) – 输入特征的丢弃率。默认值:
0.0
。
注意
add_self_loop
将在传播之前自动调用。示例
>>> import dgl >>> from dgl.nn import TWIRLSConv >>> import torch as th
>>> g = dgl.graph(([0,1,2,3,2,5], [1,2,3,4,0,3])) >>> feat = th.ones(6, 10) >>> conv = TWIRLSConv(10, 2, 128, prop_step = 64) >>> res = conv(g , feat) >>> res.size() torch.Size([6, 2])