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])
forward(graph, feat)[source]

描述

运行 TWIRLS 前向计算。

参数 graph:

图。

类型 graph:

DGLGraph

参数 feat:

初始节点特征。

类型 feat:

torch.Tensor

返回值:

输出特征

返回类型:

torch.Tensor

注意

  • 输入形状: \((N, \text{input_d})\),其中 \(N\) 是节点数。

  • 输出形状: \((N, \text{output_d})\)