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]
基类:
Module
卷积层结合来自论文 Graph Neural Networks Inspired by Classical Iterative Algorithms 的迭代重加权最小二乘法
- 参数:
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 (bool) – 如果为 True,使用预处理和非归一化拉普拉斯矩阵;否则不使用预处理并使用归一化拉普拉斯矩阵。默认值:
True
alp (float) – 论文中的 \(\alpha\)。如果等于 \(0\),将根据其他超参数自动决定。默认值:
0
。lam (float) – 论文中的 \(\lambda\)。默认值:
1
。attention (bool) – 如果为
True
,在传播过程中添加注意力层。默认值:False
。tau (float) – 论文中的 \(\tau\)。默认值:
0.2
。T (float) – 论文中的 \(T\)。如果 < 0,\(T\) 将设置为 无穷大。默认值:
-1
。p (float) – 论文中的 \(p\)。默认值:
1
。use_eta (bool) – 如果为
True
,在注意力的每个维度上添加一个可学习权重。默认值:False
。attn_bef (bool) – 如果为
True
,在传播前添加另一个注意力层。默认值:False
。dropout (float) – MLP 层中的 dropout 比率。默认值:
0.0
。attn_dropout (float) – 注意力值上的 dropout 比率。默认值:
0.0
。inp_dropout (float) – 输入特征上的 dropout 比率。默认值:
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])